Я создал Android-библиотеку, которая использует NDK ArCore
https://developers.google.com/ar/develop/c/enable-arcore
Затем я собрал библиотеку и получил .aar
файл. Затем я создал новый образец проекта и включил этот .aar
файл как модуль (импорт .JAR / .AAR пакет) и связал его как зависимость, так что все работает нормально.
Проблема в том, что когда я пытаюсь вызвать метод, использующий ArCore
, я получаю такую ошибку
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.ar, PID: 7822
java.lang.UnsatisfiedLinkError: dlopen failed: library "libarcore_sdk_c.so" not found
at java.lang.Runtime.loadLibrary0(Runtime.java:1016)
at java.lang.System.loadLibrary(System.java:1669)
at com..libtetplayer.JniInterface.<clinit>(JniInterface.java:32)
at com..libtetplayer.JniInterface.createNativeApplication(Native Method)
at com.example.ar.MainActivity.onCreate(MainActivity.kt:20)
at android.app.Activity.performCreate(Activity.java:7326)
at android.app.Activity.performCreate(Activity.java:7317)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3072)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3235)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1926)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:6990)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)
Чтобы исправить это: после того, как я построил свою библиотеку, в каталоге сборки есть несколько автоматически сгенерированных файлов, там я нашел каталог arcore-native
и четыре каталога
Я просто переместил этот источник в свой примерный проект в директорию main
, и теперь он полностью работает.
Вопрос: есть ли способ не включать эти каталоги с .so
файлами в проект при реализации библиотеки? Может мне нужно как-то напрямую включить их в lib?
P.S. Потому что каждый раз, когда бывает сложно попросить пользователя, который хочет реализовать мою библиотеку, также включить несколько каталогов с .so
файлами ...