最近用cocos creator开发一个游戏,用Android Studio打包Apk时却出现了以下错误:
Process: org.cocos2dx.javascript, PID: 24123
java.lang.UnsatisfiedLinkError: Native method not found: org.cocos2dx.javascript.SDKWrapper.nativeLoadAllPlugins:()V
at org.cocos2dx.javascript.SDKWrapper.nativeLoadAllPlugins(Native Method)
at org.cocos2dx.javascript.SDKWrapper.init(SDKWrapper.java:36)
at org.cocos2dx.javascript.AppActivity.onCreate(AppActivity.java:47)
看到这个错误我就懵了,这是个什么鬼?真是一点头绪都没有,然后就是上网各种搜,然后。。。没有一个有用的。。。
最后没办法,只好用最原始的办法,删除项目,然后用cocos creator重新构建一下,然后再用Android Studio打开构建后的项目,这次倒是一切都正常,然而,当我新建一个Activity并将其设置为 启动 Activity,然后,一切又回到了起点,又出现了
java.lang.UnsatisfiedLinkError:SDKWrapper.nativeLoadAllPlugins:()
这个错误,但这一次由于对构建出的原始项目改动比较少,所以就比较容易找到原因,由于我只是修改了启动 Activity ,所以我就把Cocos creator 构建生成的 Activity 设置回启动 Activity,还真的没有问题了,但是现在只是找到了哪里出了问题,但是怎么解决还不知道,然后我就看输出的日志,一句句的看,终于发现了一些东西,如下:
11-09 17:29:05.387 24123-24123/org.cocos2dx.javascript W/
Cocos2dxActivity: [Workaround] Ignore the activity started from icon!
由于知道出现这样问题的原因是因为没有把构建生成的Activity设置为启动 Activity,那这句输出日志自然就引起了我的注意,由输出日志可以看出,出现warning的地方是 Cocos2dxActivity,是构建自动产生的Activity,输出的日志是:
Ignore the activity started from icon!
也就是 忽略从图标启动的活动。貌似问题就在这,于是就跳到Cocos2dxActivity中看一下,
if (!isTaskRoot()) {
// Android launched another instance of the root activity into an existing task
// so just quietly finish and go away, dropping the user back into the activity
// at the top of the stack (ie: the last state of this task)
finish();
Log.w(TAG, "[Workaround] Ignore the activity started from icon!");
return;
}
这个就是输出日志的地方,从注释可以看出这个判断语句是在 Android 系统启动另一个 启动 Activity实例到一个已经存在的任务中时,结束当前的activity,而且是 quietly ,安静的结束,恩,很有礼貌,然后就坑到我们了,结束了没什么,但是出现一些莫名奇妙的错误,让我们怎么找?郁闷。。。
接下来的事就简单了,把上面的这些代码全部注释,然后问题就解决了,不过,修改这个地方,可能在以后会在一些地方出现一些错误,所以修改与否还要大家自己决定啦,希望这些可以帮到你。。。