Ошибка JNI "Не найдена реализация для" -> Android Автономный набор инструментов - PullRequest
0 голосов
/ 11 февраля 2020

Я компилирую общую библиотеку (.so) для использования в моем Android приложении.

Я компилирую эту библиотеку с помощью отдельного набора инструментов.

При запуске этого приложения через виртуальное устройство Android (AVD) общая библиотека загружается и работает без проблем на платформе x86. Ниже приведены мои команды для компиляции для x86.

  • i686- linux -android26-clang -II / home / veda / android -ndk-r21 / sysroot / usr / include -O0 - g3 -Wall - c -fmessage-length = 0 -состояния c -libg cc -march = i686 -mtune = intel -mssse3 -mfpmath = sse -m32 -fPI C
  • i686- linux -android26-clang ++ -II / home / veda / android -ndk-r21 / sysroot / usr / include -O0 -g3 -Wall - c -fmessage-length = 0 -std = c + +11 -stati c -libstdc ++ -march = i686 -mtune = intel -mssse3 -mfpmath = sse -m32 -fPI C

Однако при попытке загрузить библиотеку в на телефон (Google Pixel) отображается следующая ошибка. Пиксель Google - это платформа arm64. Ниже приведены мои команды для компиляции для arm64. Любые идеи?

  • aarch64- linux - android -g cc -I / home / veda / android -ndk-r21 / build / toolchain / sysroot / usr / include / android -O0 -g3 -Wall - c -fmessage-length = 0 -stati c -libg cc -fPI C
  • aarch64- linux - android -g ++ -I / home / veda / android -ndk-r21 / build / toolchain / sysroot / usr / include / android -O0 -g3 -Wall - c -fmessage-length = 0 - std = c ++ 11 -stati c -libstdc ++ -fPI C

Ошибка:

E/linker: "/data/app/com.example.androidsharedlibscratch-a6Mv8edOnQ2q6HbbixecrQ==/lib/arm64/libToon-c.so": ignoring DT_PREINIT_ARRAY in shared library! E/haredlibscratc: No implementation found for long com.example.androidsharedlibscratch.Toon.createToon() (tried Java_com_example_androidsharedlibscratch_Toon_createToon and Java_com_example_androidsharedlibscratch_Toon_createToon__) D/AndroidRuntime: Shutting down VM E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.androidsharedlibscratch, PID: 18368
    java.lang.UnsatisfiedLinkError: No implementation found for long com.example.androidsharedlibscratch.Toon.createToon() (tried Java_com_example_androidsharedlibscratch_Toon_createToon and Java_com_example_androidsharedlibscratch_Toon_createToon__)
        at com.example.androidsharedlibscratch.Toon.createToon(Native Method)
        at com.example.androidsharedlibscratch.Toon.<init>(Toon.java:44)
        at com.example.androidsharedlibscratch.MainActivity.onCreate(MainActivity.java:41)
        at android.app.Activity.performCreate(Activity.java:7144)
        at android.app.Activity.performCreate(Activity.java:7135)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2931)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3086)
        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:1816)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6718)
        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:858)
...