2

我对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 的完整性?
还有哪些其他因素可能导致此问题?

请指教。

4

1 回答 1

0

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

System.loadLibrary("gnustl_shared");

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

于 2013-08-19T22:28:51.573 回答