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,但是还没找到合适的方法,所以就先这样弄了
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,但是还没找到合适的方法,所以就先这样弄了
相关文章推荐
- cocos2dx3.0-lua获取cocosstudio场景以及获取ui等控件
- xcode下cocos2dx 3.0的一些使用
- cocos2d-x 创建工程
- 手把手,快速搭建 Cocos2d-HTML5 开发调试环境
- cocos2d-x学习资源汇总
- cocos2d-x 如何实现角色在地图中的不同高低台阶行走的路线控制
- cocosBuilder播放动画
- cocos2d-x-3.0beta2 经典例句
- cocos2d-x-LuaProxy学习 C/S通信交互之WebSocket
- cocos2dx添加和删除一个label节点
- cocos2d-x 中xml的读取
- eclipse下编译cocos2dx工程
- CocosBuilder绑定到cocos2d-x
- cocos2dx TiledMap
- First cocos2d_android Project
- Python创建Cocos2d-x 2.2方法
- cocos2d 动作,to和by区别(转)
- cocos2dx资源进行打包的工具和代码实zpack
- cocos2dx项目中使用cocostudio ui编辑器的导出文件
- cocos2d-iPhone基础