我对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的完整性?
还有什么其他因素可能导致这个问题?
请指教。
答案 0 :(得分:0)
我收到了类似的错误消息,这是因为我的本机lib使用非系统库(即不在... / usr / lib中),在我的例子中是gnustl_shared。您必须首先通过在Java中创建静态代码块来加载任何此类库:
System.loadLibrary("gnustl_shared");
您的应用中无法加载的库是libRb.so。找出需要链接的其他库并首先加载它们。