2013-08-05 37 views
0

我創建了另一個問題,因爲所有其他問題的回答都是類似但不相關的解決方案。我也確保它不是一個符號剝離問題。NativeActivty將無法啓動 - 無法加載本機庫

,我發現了可怕的錯誤:

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工具鏈與4.7.2,2.3.3目標(android-10),armv7-a。我有我適當包含的庫,並最終完全鏈接。

我的一個理論,我仍然無法證明,是有一些.so文件,我也需要包含apk。我認爲外部庫(so)會和我自己合併。如果情況並非如此,這可能會解釋手頭的問題。

我沒有直接使用任何makefiles - vs-android正在處理它的大部分。我只能訪問一些.xml和.property文件。

回答

0

看來如果存在無法找到的依賴庫,這個錯誤就會模糊不清。由於我正在使用vs-android,我仍然不確定如何將外部.so文件正確地包含在apk下的/libs/路徑中。

包含外部.so文件的唯一解決方案是以某種方式將庫導入您的apk並在代碼中手動鏈接它們,在本機庫加載之前在Java端調用System.loadLibrary(),或讓一個本機庫加載庫然後啓動你的主庫。