Не удалось связать libstlport_shared, хотя он и присутствует...?

Я почти готов начать стучать головой об стену здесь. Я прочитал каждую SO нить, которую смог найти об этом выпуске, прочитал каждый результат Google по этому выпуску и не могу найти корточки. Я создаю приложение для Android, где я написал 2D-движок на C++ и использую общую версию stlport с NDK r6b. Файл .so для libstlport_shared генерируется и успешно копируется в мою папку libs. Я даже проверил с помощью оболочки adb на устройстве и файл .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-движком.

Кто-нибудь испытывает такую проблему? Есть идеи? Также обратите внимание, что я сделал объективный дамп на libstlport_shared, чтобы проверить его депозиты. Я подтвердил их существование на моем устройстве с DDMS и даже явно загрузил их в свой java-код перед попыткой загрузки libstlport_shared. Не было никакой разницы. Заранее спасибо!

ALSO

Это вроде как второй, необязательный компонент вопроса. Одно из решений, о котором я думал, но еще не пытался, это использование System.load(absolutePathToLibrary), но я не могу найти, как сгенерировать этот путь внутри java. Я не хочу усложнять его программирование по очевидным причинам. Еще раз спасибо!

7
задан 17 September 2011 в 17:54
поделиться