我创建了另一个问题,因为所有其他人都得到了一个类似但无关的解决方案。我也确保它不是符号剥离问题。
我遇到了可怕的错误:
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
如果重要的话,使用vs-android和toolchain 4.7.2,目标是2.3.3(android-10),用于armv7-a。我有适当包含的库,最终完全链接。
我的一个理论,我仍然无法证明,是有一些.so文件,我还需要包含在apk中。我假设外部库(so)将与我自己的库合并。如果不是这种情况,这可能会解释手头的问题。
我没有直接使用任何makefile - vs-android正在处理它的大部分内容。我只能访问一些.xml和.property文件。
答案 0 :(得分:0)
如果存在无法找到的依赖库,似乎会出现这种错误。由于我使用的是vs-android,我仍然不确定如何将外部.so文件正确地包含在/libs/
路径下的apk中。
包含外部.so文件的唯一解决方案是以某种方式将库放入apk并在代码中手动链接它们,在本机库加载之前在Java端调用System.loadLibrary()
,或者拥有一个本机库加载库,然后启动主库。