0

我创建了另一个问题,因为所有其他问题的答案都是相似但不相关的解决方案。我还确保这不是符号剥离问题。

我收到了可怕的错误:

D/AndroidRuntime(16487): Shutting down VM
W/dalvikvm(16487): threadid=1: thread exiting with uncaught exception (group=0x41b1b700)
E/AndroidRuntime(16487): FATAL EXCEPTION: main
E/AndroidRuntime(16487): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.test.test/android.app.NativeActivity}: java.lang.IllegalArgumentException: Unable to load native library: /data/app-lib/com.test.test-1/libtest.so
E/AndroidRuntime(16487):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
E/AndroidRuntime(16487):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
...

一切编译和链接都很好。

我也有 app_dummy() 并且当我使用 objdump 运行时它会正确生成它:

001186f4 g    DF .text  000001a4 ANativeActivity_onCreate

如果重要的话,使用带有工具链 4.7.2 的 vs-android,针对 armv7-a 的 2.3.3 (android-10)。我有适当包含的库,并最终完全链接。

我仍然无法证明的一个理论是,我还需要将一些 .so 文件包含在 apk 中。我假设外部库(so)将与我自己的合并。如果不是这种情况,这可能会解释手头的问题。

我没有直接使用任何 makefile - vs-android 正在处理其中的大部分。我只能访问一些 .xml 和 .property 文件。

4

1 回答 1

0

如果存在无法找到的依赖库,似乎此错误会模棱两可地出现。由于我使用的是 vs-android,我仍然不确定如何将外部 .so 文件正确包含在/libs/路径下的 apk 中。

包含外部 .so 文件的唯一解决方案是以某种方式将库放入您的 apk 并在代码中手动链接它们,在System.loadLibrary()加载本机库之前在 Java 端调用,或者让一个本机库加载库然后启动您的主库图书馆。

于 2013-08-06T13:35:20.717 回答