Есть ли способ загружать библиотеки времени выполнения, кроме того, что они помещаются в src / main / jniLibs?

Я пытаюсь написать приветственный треугольник для opengl es 2 на Android.

Единственное работающее решение, которое я нашел, это иметь собственные библиотеки jogl в app/src/main/jniLibs/ , таким образом :

 app/ |--> src/ |--> main/ |--> jniLibs/ |--> lib*.so 

На моем соответствующем привет-настольном проекте , я просто имею в своем build.gradle

 def joglVersion = '2.3.2' compile "org.jogamp.gluegen:gluegen-rt-main:$joglVersion" compile "org.jogamp.jogl:jogl-all-main:$joglVersion" 

и он работает безупречно, во время выполнения библиотеки извлекаются и предоставляются.

Одной из альтернатив этому решению является извлечение их вручную и их размещение в рамках project/natives . Они оба работают.

На андроиде я никогда не работал так, как на рабочем столе, простой build.gradle . Единственный способ, как я уже сказал, извлечь их вручную из банок, где они были, и поместить их под jniLibs/

Независимо от того, где я помещаю туземные директории plaind natives/android-armv6 (не natives/android-armv6 , .jar или .apk ), он всегда терпит неудачу:

 E/AndroidRuntime: FATAL EXCEPTION: main Process: org.helloTriangle_es2, PID: 9735 java.lang.UnsatisfiedLinkError: dlopen failed: library "//natives/android-armv6//libgluegen-rt.so" not found at java.lang.Runtime.load(Runtime.java:332) at java.lang.System.load(System.java:1069) at com.jogamp.common.jvm.JNILibLoaderBase.loadLibraryInternal(JNILibLoaderBase.java:624) at com.jogamp.common.jvm.JNILibLoaderBase.access$000(JNILibLoaderBase.java:63) at com.jogamp.common.jvm.JNILibLoaderBase$DefaultAction.loadLibrary(JNILibLoaderBase.java:106) at com.jogamp.common.jvm.JNILibLoaderBase.loadLibrary(JNILibLoaderBase.java:487) at com.jogamp.common.os.DynamicLibraryBundle$GlueJNILibLoader.loadLibrary(DynamicLibraryBundle.java:421) at com.jogamp.common.os.Platform$1.run(Platform.java:317) at java.security.AccessController.doPrivileged(AccessController.java:45) at com.jogamp.common.os.Platform.<clinit>(Platform.java:287) at com.jogamp.common.os.Platform.initSingleton(Platform.java:355) at com.jogamp.opengl.GLProfile.<clinit>(GLProfile.java:147) at org.helloTriangle_es2.MainActivity.onCreate(MainActivity.java:23) at android.app.Activity.performCreate(Activity.java:6322) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1113) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2519) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2654) at android.app.ActivityThread.-wrap11(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1488) at android.os.Handler.dispatchMessage(Handler.java:111) at android.os.Looper.loop(Looper.java:207) at android.app.ActivityThread.main(ActivityThread.java:5728) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679) I/Process: Sending signal. PID: 9735 SIG: 9 Application terminated. 

Оглядываясь, я прочитал этот ответ , где говорят, что в основном apk files – это (вроде) время выполнения.

Я попробовал это, добавив:

 provided files('libs/gluegen-rt-natives-android-armv6.jar') provided files('libs/jogl-all-natives-android-armv6.jar') 

но никак. Также пытались compile / provided вместо provided не было … всегда одно и то же исключение

Я что-то делаю неправильно или извлекаю их вручную под src/main/jniLibs/armeabi – это единственное решение?