Android& Cocos2d-x:System.loadLibrary(libName)上的异常; &安培; onLoadNativeLibraries();

时间:2014-07-22 13:27:19

标签: android eclipse debugging cocos2d-x logcat

好吧,我终于让cocos2d-x进入了IDE,现在我可以做一些小改动,比如更改标签文本。

但是当试图添加精灵时,应用程序在我的手机上崩溃了(Galaxy Ace 2),我无法理解调试输出。

我按照THIS视频设置了我的IDE,我真的只是在模板项目中添加一个精灵......

有人可以帮我解决这个问题:

07-22 13:22:32.310: D/PhoneWindow(22070): couldn't save which view has focus because the focused view org.cocos2dx.lib.Cocos2dxGLSurfaceView@405240c8 has no id.
07-22 13:22:32.930: V/SurfaceView(22070): org.cocos2dx.lib.Cocos2dxGLSurfaceView@405240c8 got app visibiltiy is changed: false
07-22 13:22:32.930: I/GLThread(22070): noticed surfaceView surface lost tid=12
07-22 13:22:32.930: W/EglHelper(22070): destroySurface()  tid=12
07-22 13:22:32.960: D/CLIPBOARD(22070): Hide Clipboard dialog at Starting input: finished by someone else... !
07-22 13:23:05.190: W/dalvikvm(22133): threadid=1: thread exiting with uncaught exception (group=0x4001e578)
07-22 13:23:05.190: E/AndroidRuntime(22133): FATAL EXCEPTION: main
07-22 13:23:05.190: E/AndroidRuntime(22133): java.lang.UnsatisfiedLinkError: Couldn't load cocos2dcpp: findLibrary returned null
07-22 13:23:05.190: E/AndroidRuntime(22133):    at java.lang.Runtime.loadLibrary(Runtime.java:429)
07-22 13:23:05.190: E/AndroidRuntime(22133):    at java.lang.System.loadLibrary(System.java:554)
07-22 13:23:05.190: E/AndroidRuntime(22133):    at org.cocos2dx.lib.Cocos2dxActivity.onLoadNativeLibraries(Cocos2dxActivity.java:66)
07-22 13:23:05.190: E/AndroidRuntime(22133):    at org.cocos2dx.lib.Cocos2dxActivity.onCreate(Cocos2dxActivity.java:80)
07-22 13:23:05.190: E/AndroidRuntime(22133):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1050)
07-22 13:23:05.190: E/AndroidRuntime(22133):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
07-22 13:23:05.190: E/AndroidRuntime(22133):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
07-22 13:23:05.190: E/AndroidRuntime(22133):    at android.app.ActivityThread.access$1500(ActivityThread.java:117)
07-22 13:23:05.190: E/AndroidRuntime(22133):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
07-22 13:23:05.190: E/AndroidRuntime(22133):    at android.os.Handler.dispatchMessage(Handler.java:99)
07-22 13:23:05.190: E/AndroidRuntime(22133):    at android.os.Looper.loop(Looper.java:130)
07-22 13:23:05.190: E/AndroidRuntime(22133):    at android.app.ActivityThread.main(ActivityThread.java:3691)
07-22 13:23:05.190: E/AndroidRuntime(22133):    at java.lang.reflect.Method.invokeNative(Native Method)
07-22 13:23:05.190: E/AndroidRuntime(22133):    at java.lang.reflect.Method.invoke(Method.java:507)
07-22 13:23:05.190: E/AndroidRuntime(22133):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912)
07-22 13:23:05.190: E/AndroidRuntime(22133):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:670)
07-22 13:23:05.190: E/AndroidRuntime(22133):    at dalvik.system.NativeStart.main(Native Method)
07-22 13:23:07.200: I/dalvikvm(22133): threadid=4: reacting to signal 3
07-22 13:23:07.200: I/dalvikvm(22133): Wrote stack traces to '/data/anr/traces.txt'

由于


P.S。 Cocos2dxActivity.java在第66行和第66行有错误80。

第66行是System.loadLibrary(libName);,第80行是onLoadNativeLibraries();第65行,它将lib名称声明为String libName = bundle.getString("android.app.lib_name");

另外,我可以在清单中看到关键信息是:

<!-- Tell Cocos2dxActivity the name of our .so -->
<meta-data android:name="android.app.lib_name"
    android:value="cocos2dcpp" />

我有NDK,我把它连接到我的./bash_profile。但我刚刚注意到控制台说:

python /Users/damianwilliams/Desktop/KittyKatch/proj.android/build_native.py -b release all 
NDK_ROOT not defined. Please define NDK_ROOT in your environment

但是我知道我的bash因为我的bash配置文件说:

# Add environment variable COCOS_CONSOLE_ROOT for cocos2d-x
export COCOS_CONSOLE_ROOT=/Users/damianwilliams/Desktop/Android-Development-Root/cocos2d-x-3.2rc0/tools/cocos2d-console/bin
export PATH=$COCOS_CONSOLE_ROOT:$PATH

# Add environment variable NDK_ROOT for cocos2d-x
export NDK_ROOT=/Users/damianwilliams/Desktop/Android-Development-Root/android-ndk-r10
export PATH=$NDK_ROOT:$PATH

# Add environment variable ANT_ROOT for cocos2d-x
export ANT_ROOT=/Users/damianwilliams/Desktop/Android-Development-Root/apache-ant-1.9.4/bin
export PATH=$ANT_ROOT:$PATH

但是我不知道如何处理这些信息或者我是否正确构建了它。

3 个答案:

答案 0 :(得分:0)

有错误:

java.lang.UnsatisfiedLinkError: Couldn't load cocos2dcpp: findLibrary returned null //  <-- error
07-22 13:23:05.190: E/AndroidRuntime(22133):    at java.lang.Runtime.loadLibrary(Runtime.java:429)
07-22 13:23:05.190: E/AndroidRuntime(22133):    at java.lang.System.loadLibrary(System.java:554)
07-22 13:23:05.190: E/AndroidRuntime(22133):    at org.cocos2dx.lib.Cocos2dxActivity.onLoadNativeLibraries(Cocos2dxActivity.java:66) // <-- file name : line number
07-22 13:23:05.190: E/AndroidRuntime(22133):    at org.cocos2dx.lib.Cocos2dxActivity.onCreate(Cocos2dxActivity.java:80) // <-- file name : line number

轻松找出错误的位置....查找括号( ) ..
如果它包含您的活动或Java文件名..这意味着可能有错误...

此处......第66行或第80行 Cocos2dxActivity.java 文件中可能存在错误

答案 1 :(得分:0)

我不认为你会喜欢这个答案。您的代码依赖于可能是本机代码的库。第66行的调用尝试加载本机二进制文件并失败。

当然,加载可能会失败的原因有很多。以下是一些:

  • 您没有构建库,而且它不在您的.apk
  • 每个平台都有自己的方法来构建库文件名,从根名称(例如,foo.dylib,libfoo.so等)。该文件存在但名称错误。
  • 该库与您正在使用的硬件不是二进制兼容的:加载失败

您将不得不在密钥&#34; android.app.lib_name&#34;中找出该捆绑包中传递的文件名,并确定如何构建它所代表的可加载库。

答案 2 :(得分:0)

解决方案是进入Eclipse,右键单击我的项目并选择属性。在那里,我去了C / C ++ Build,然后是Environment。

我点击了ADD,为名称做了NDK_ROOT,然后是值的路径......

做了一次治疗......