Я почти готов начать стучать головой о стену здесь. Я прочитал все темы, которые я могу найти об этой проблеме, прочитал все результаты Google по этой проблеме и не могу найти присед. Я создаю приложение для Android, где я написал 2D-движок на C ++ и использую совместно используемую версию stlport с NDK r6b. .So файл для libstlport_shared генерируется и успешно копируется в мою папку libs. Я даже проверил, используя adb shell на устройстве, и .so файл скопирован правильно.
Я пробовал различные решения, такие как изменение моего файла .mk для явного объявления libstlport_shared.so как обязательного модуля. Во время компиляции все идет отлично, он отображается в APK, он успешно копирует на устройство. Все же я получаю эту ошибку:
09-17 17:35:26.450: DEBUG/dalvikvm(19277): Trying to load lib /data/data/ca.ascensionsystems.mypackagename/lib/libstlport_shared.so 0x476c6f30
09-17 17:35:26.450: INFO/dalvikvm(19277): Unable to dlopen(/data/data/ca.ascensionsystems.mypackagename/lib/libstlport_shared.so): Cannot load library: link_image[1995]: failed to link libstlport_shared.so
09-17 17:35:26.450: WARN/dalvikvm(19277): Exception Ljava/lang/UnsatisfiedLinkError; thrown during Lca/ascensionsystems/mypackagename/Ascengine;.<clinit>
09-17 17:35:26.450: WARN/dalvikvm(19277): threadid=8: thread exiting with uncaught exception (group=0x40025a70)
09-17 17:35:26.470: VERBOSE/WindowManager(4837): Remove Window{479ca678 Starting ca.ascensionsystems.mypackagename paused=false}: mSurface=Surface(name=Starting ca.ascensionsystems.mypackagename, identity=90) mExiting=false isAnimating=true app-animation=android.view.animation.AnimationSet@4794fa10 inPendingTransaction=false mDisplayFrozen=false
09-17 17:35:26.470: ERROR/WindowManager(4837): return in removeWindowLocked
09-17 17:35:26.490: ERROR/AndroidRuntime(19277): FATAL EXCEPTION: GLThread 9
09-17 17:35:26.490: ERROR/AndroidRuntime(19277): java.lang.ExceptionInInitializerError
09-17 17:35:26.490: ERROR/AndroidRuntime(19277): at ca.ascensionsystems.mypackagename.GL2JNIView$Renderer.onSurfaceChanged(GL2JNIView.java:336)
09-17 17:35:26.490: ERROR/AndroidRuntime(19277): at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1327)
09-17 17:35:26.490: ERROR/AndroidRuntime(19277): at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1118)
09-17 17:35:26.490: ERROR/AndroidRuntime(19277): Caused by: java.lang.UnsatisfiedLinkError: Library stlport_shared not found
09-17 17:35:26.490: ERROR/AndroidRuntime(19277): at java.lang.Runtime.loadLibrary(Runtime.java:461)
09-17 17:35:26.490: ERROR/AndroidRuntime(19277): at java.lang.System.loadLibrary(System.java:557)
09-17 17:35:26.490: ERROR/AndroidRuntime(19277): at ca.ascensionsystems.mypackagename.Ascengine.<clinit>(Ascengine.java:26)
09-17 17:35:26.490: ERROR/AndroidRuntime(19277): ... 3 more
09-17 17:35:26.500: WARN/ActivityManager(4837): Force finishing activity ca.ascensionsystems.mypackagename/.mypackagenameActivity
Обратите внимание, что я заменил свое настоящее имя пакета на «mypackagename», чтобы не выдавать суперсекретное удивительное имя моей предстоящей игры. :) Также обратите внимание, что Ascengine - это еще одно .SO, мое основное приложение SO, которое является моим 2D движком.
Кто-нибудь сталкивался с такой проблемой? Есть идеи? Также обратите внимание, что я сделал objdump для libstlport_shared, чтобы проверить его deps. Я подтвердил, что они существуют на моем устройстве с DDMS, и даже явно загрузил их в мой код Java, прежде чем пытаться загрузить libstlport_shared. Не сделал разницы Заранее спасибо!
ТАКЖЕ
Это своего рода второй, необязательный компонент вопроса. Одно решение, о котором я думал, но еще не пытался, - это использовать System.load (absolutePathToLibrary), но я не могу найти, как сгенерировать этот путь в Java. Я не хочу жестко его кодировать по понятным причинам. Еще раз спасибо!