您的位置:首页 > 移动开发 > Cocos引擎

cocos2d-x 集成移动游戏基地 sdk包 cmgame 遇到的问题

2014-02-26 17:01 459 查看
在cocos2d-x 集成 cmgame时,有时会遇到这个错误

02-26 16:51:18.565: W/dalvikvm(16222): JNI WARNING: JNI method called with exception pending

02-26 16:51:18.565: W/dalvikvm(16222): in Ljava/lang/Runtime;.nativeLoad:(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/String; (RegisterNatives)

02-26 16:51:18.565: W/dalvikvm(16222): Pending exception is:

02-26 16:51:18.565: I/dalvikvm(16222): java.lang.NoClassDefFoundError: com/ir/gc/CustomContentProvider

02-26 16:51:18.565: I/dalvikvm(16222): at java.lang.Runtime.nativeLoad(Native Method)

02-26 16:51:18.566: I/dalvikvm(16222): at java.lang.Runtime.loadLibrary(Runtime.java:368)

02-26 16:51:18.566: I/dalvikvm(16222): at java.lang.System.loadLibrary(System.java:535)

02-26 16:51:18.566: I/dalvikvm(16222): at com.letu.cocos2dxTest.CmgameApplication.onCreate(CmgameApplication.java:13)

02-26 16:51:18.569: I/dalvikvm(16222): at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:969)

02-26 16:51:18.569: I/dalvikvm(16222): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4115)

02-26 16:51:18.569: I/dalvikvm(16222): at android.app.ActivityThread.access$1300(ActivityThread.java:134)

02-26 16:51:18.569: I/dalvikvm(16222): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1285)

02-26 16:51:18.569: I/dalvikvm(16222): at android.os.Handler.dispatchMessage(Handler.java:99)

02-26 16:51:18.569: I/dalvikvm(16222): at android.os.Looper.loop(Looper.java:154)

02-26 16:51:18.569: I/dalvikvm(16222): at android.app.ActivityThread.main(ActivityThread.java:4624)

02-26 16:51:18.569: I/dalvikvm(16222): at java.lang.reflect.Method.invokeNative(Native Method)

02-26 16:51:18.569: I/dalvikvm(16222): at java.lang.reflect.Method.invoke(Method.java:511)

02-26 16:51:18.569: I/dalvikvm(16222): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:809)

02-26 16:51:18.569: I/dalvikvm(16222): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:576)

02-26 16:51:18.569: I/dalvikvm(16222): at dalvik.system.NativeStart.main(Native Method)

02-26 16:51:18.569: I/dalvikvm(16222): Caused by:

02-26 16:51:18.569: I/dalvikvm(16222): java.lang.ClassNotFoundException: com.ir.gc.CustomContentProvider

02-26 16:51:18.569: I/dalvikvm(16222): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)

02-26 16:51:18.569: I/dalvikvm(16222): at java.lang.ClassLoader.loadClass(ClassLoader.java:501)

02-26 16:51:18.569: I/dalvikvm(16222): at java.lang.ClassLoader.loadClass(ClassLoader.java:461)

原因时我的libmegjb.so不是直接拷贝到libs下面的,而是在jni下的prebuilt下面 预编的

经过预编义,libmegij.so会被 strip ,丢失一些符号或者ndk认为没用的东西

找了本办法:

写一个脚本

mybuild.sh

#!/bin/sh

/Users/yangzheng/Installation/Android/android-ndk-r8e/ndk-build $@
cp jni/prebuilt/libmegjb.so libs/armeabi

嘿嘿,其实就是执行完ndk-build后自己拷贝一份libmegjb.so
然后让eclipse的Build command 里 改成 执行 mybuild.sh
ok,问题解决

其实这是办法,应该想办法让ndk在prebuilt的时候不要strip,但是还没找到合适的方法,所以就先这样弄了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: