Я создал другой вопрос, потому что на все остальные ответили решением, которое было похоже, но не связано. Я также заверил, что это не проблема удаления символов.
Я получаю страшную ошибку:
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. Я предполагал, что внешние библиотеки (так) будут объединены с моими. Если это не так, это, вероятно, объяснит проблему под рукой.
Я не использую никаких make-файлов напрямую — vs-android обрабатывает большинство из них. У меня есть доступ только к некоторым файлам .xml и .property.
Кажется, эта ошибка возникнет неоднозначно, если есть зависимые библиотеки, которые не могут быть найдены. Так как я использую vs-android, я все еще не уверен, как правильно получить внешние файлы .so для правильного включения в apk под /libs/
дорожка.
Единственное решение для включения внешних .so файлов — это каким-то образом получить библиотеки в ваш apk и связать их вручную в коде. System.loadLibrary()
на стороне Java перед загрузкой вашей собственной библиотеки или загрузите библиотеки одной собственной библиотекой, а затем запустите основную библиотеку.
Других решений пока нет …