仅三星平板Wikitude 7.0.0报World未定义及权限异常求助
咱们一步步拆解你遇到的两个问题——先解决直接导致AR功能卡壳的JavaScript错误,再处理Android系统的权限日志异常。
一、核心错误:Uncaught ReferenceError: World is not defined
这个报错是前端JavaScript层面的问题,Wikitude AR应用的核心逻辑几乎都依赖自定义的World对象处理AR场景、识别回调等操作,优先排查以下几点:
检查
World对象的定义:打开你的AR项目JS文件,确认是否存在类似这样的代码块:var World = { // 初始化方法、识别回调等逻辑 init: function() { ... }, onRecognize: function() { ... } };如果没有定义
World,或者定义位置不对,就会触发这个报错。确认脚本加载顺序:确保包含
World定义的JS文件在Wikitude SDK核心脚本(比如wikitude.js)之后加载?不对——正确顺序是先加载Wikitude SDK,再加载你的自定义World脚本,或者在同一个脚本里先定义World再初始化SDK。仔细检查HTML中的<script>标签顺序,保证World在SDK初始化前就已被定义。排查拼写错误:JavaScript是大小写敏感的,别把
World写成world或其他变体,变量名必须完全匹配。检查SDK初始化的回调引用:如果你的Wikitude初始化代码调用了
World的方法(比如AR.context.resume()或启动识别时的回调),要确认这些调用是在World定义之后执行的,避免提前引用未定义的对象。
二、权限日志异常:java.lang.SecurityException: Permission Denial
这条日志是Android系统层面的权限报错,不一定直接导致AR功能失效,可按以下步骤排查:
04-30 15:20:07.886 604-2171/? E/DatabaseUtils: Writing exception to parcel java.lang.SecurityException: Permission Denial: get/set setting for user asks to run as user -2 but is calling from user 0; this requires android.permission.INTERACT_ACROSS_USERS_FULL at com.android.server.am.ActivityManagerService.handleIncomingUser(ActivityManagerService.java...
权限本身的特殊性:
android.permission.INTERACT_ACROSS_USERS_FULL是系统级权限,普通第三方应用无法获取(需要系统签名),如果你的AndroidManifest.xml里误加了这个权限,建议直接移除。多用户模式影响:如果你的平板处于多用户模式,尝试切换到主用户(用户0)运行应用,看是否还会出现这条日志。部分系统服务在跨用户操作时会触发这类权限报错。
确认进程归属:日志里的进程ID是
604-2171,可以通过Android Studio的Logcat筛选这个进程,看是否是你的Wikitude应用进程。如果是系统进程抛出的,那大概率是平板系统本身的问题,和你的应用代码无关,无需过度关注。
总结
优先解决World is not defined的错误,这是导致AR功能无法正常启动的直接原因;权限日志如果不影响应用运行,可以先暂时忽略,或者按上述步骤排查是否和你的应用操作相关。
内容的提问来源于stack exchange,提问作者Honeywell

