调试...无法加载本机库

时间:2013-03-01 21:45:36

标签: debugging android-ndk

我对Android开发很新,看来我有一个相当经典的例外......

E/AndroidRuntime( 2119): FATAL EXCEPTION: main
E/AndroidRuntime( 2119): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.oneloop.Rb/android.app.NativeActivity}: java.lang.IllegalArgumentException: Unable to load native library: /data/app-lib/com.oneloop.Rb-1/libRb.so
E/AndroidRuntime( 2119):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)

我见过的大多数答案都包括将hasCode设置为true或确保包含app_dummy - 这两个都没有解决我的问题。另外,我已经确认(通过转换为zip和探索)我编译的apk包含lib / armeabi-v7a / libRb.so。

我一直在将一个好的大小框架(众多静态库,opengl和预构建的中间件库)转换为android - 所以我明显的倾向是我在库和我的SO之间存在某种不兼容性。问题是logcat不提供有关库失败原因的信息。

我从哪里开始?
我如何找出我的哪些lib.a是问题?
可以使用哪些技术来进一步解决阻止我的SO加载的问题? 有没有办法在调试中打开详细程度? 是否有任何命令行应用程序可用于验证我的APK和SO的完整性?
还有什么其他因素可能导致这个问题?

请指教。

1 个答案:

答案 0 :(得分:0)

我收到了类似的错误消息,这是因为我的本机lib使用非系统库(即不在... / usr / lib中),在我的例子中是gnustl_shared。您必须首先通过在Java中创建静态代码块来加载任何此类库:

System.loadLibrary("gnustl_shared");

您的应用中无法加载的库是libRb.so。找出需要链接的其他库并首先加载它们。

相关问题