Учебное пособие по ImportSDKDemo: не найдена реализация для byte [] dji.midware.natives.SDKRelativeJNI.native_getXXXX (java.lang.String) - PullRequest
0 голосов
/ 14 сентября 2018

У меня проблема при попытке эмулировать проект ImportSDKDemo .

Я следую этому учебнику , но отсутствует информация, например, о MainActivity.class.

Когда я пытаюсь запустить эмуляцию, я получаю следующую ошибку:

java.lang.UnsatisfiedLinkError: Реализация байта [] dji.midware.natives.SDKRelativeJNI не найдена.native_getXXXX (java.lang.String) (пробовал Java_dji_midware_natives_SDKRelativeJNI_native_1getXXXX и Java_dji_midware_natives_SDKRelativeJNI_native_1getXXXX__Ljava_lang_String_2)

Вот весь лог:

09-14 05:04:29.389 3080-3080/? I/m.importsdkdem: Not late-enabling -Xcheck:jni (already on)
09-14 05:04:29.499 3080-3080/? W/m.importsdkdem: Unexpected CPU variant for X86 using defaults: x86
09-14 05:04:30.082 3080-3080/dji.com.importsdkdemo E/sdk: install begin
09-14 05:04:30.086 3080-3080/dji.com.importsdkdemo V/sdk: DexInstall beging
    installSecondarDexs
09-14 05:04:30.086 3080-3080/dji.com.importsdkdemo W/m.importsdkdem: Accessing hidden field Ldalvik/system/BaseDexClassLoader;->pathList:Ldalvik/system/DexPathList; (light greylist, reflection)
    Accessing hidden method Ldalvik/system/DexPathList;->makeInMemoryDexElements([Ljava/nio/ByteBuffer;Ljava/util/List;)[Ldalvik/system/DexPathList$Element; (light greylist, JNI)
09-14 05:04:30.320 3080-3080/dji.com.importsdkdemo W/m.importsdkdem: Accessing hidden field Ldalvik/system/DexPathList;->dexElements:[Ldalvik/system/DexPathList$Element; (light greylist, reflection)
09-14 05:04:30.320 3080-3080/dji.com.importsdkdemo V/sdk: DexInstall end
09-14 05:04:30.376 3080-3098/dji.com.importsdkdemo I/m.importsdkdem: Background concurrent copying GC freed 3588(1814KB) AllocSpace objects, 0(0B) LOS objects, 42% free, 8MB/14MB, paused 12.441ms total 165.671ms
09-14 05:04:30.549 3080-3080/dji.com.importsdkdemo W/m.importsdkdem: Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (light greylist, reflection)
    Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (light greylist, reflection)
09-14 05:04:30.594 3080-3142/dji.com.importsdkdemo E/linker: "/data/app/dji.com.importsdkdemo-jCjys7hOmf0GKv6jezsaUw==/lib/x86/libffmpeg.so" has text relocations (https://android.googlesource.com/platform/bionic/+/master/android-changes-for-ndk-developers.md#Text-Relocations-Enforced-for-API-level-23)
09-14 05:04:30.614 3080-3142/dji.com.importsdkdemo W/System.err: java.lang.UnsatisfiedLinkError: dlopen failed: "/data/app/dji.com.importsdkdemo-jCjys7hOmf0GKv6jezsaUw==/lib/x86/libffmpeg.so" has text relocations (https://android.googlesource.com/platform/bionic/+/master/android-changes-for-ndk-developers.md#Text-Relocations-Enforced-for-API-level-23)
        at java.lang.Runtime.loadLibrary0(Runtime.java:1016)
        at java.lang.System.loadLibrary(System.java:1669)
        at dji.midware.natives.SDKRelativeJNI.<clinit>(Unknown Source:2)
        at dji.midware.natives.SDKRelativeJNI.native_getXXXX(Native Method)
        at com.dji.g.a.a.b.a(Unknown Source:24)
        at com.dji.g.a.a.b.a(Unknown Source:5)
        at dji.sdk.sdkmanager.DJISDKManager.<clinit>(Unknown Source:2)
        at dji.sdk.sdkmanager.DJISDKManager.getInstance(Unknown Source:0)
        at dji.com.importsdkdemo.MainActivity$1.run(MainActivity.java:121)
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
09-14 05:04:30.615 3080-3142/dji.com.importsdkdemo W/System.err:     at java.lang.Thread.run(Thread.java:764)
09-14 05:04:30.615 3080-3142/dji.com.importsdkdemo D/SDKRelativeJNI: Couldn't load lib
09-14 05:04:30.615 3080-3142/dji.com.importsdkdemo E/m.importsdkdem: No implementation found for byte[] dji.midware.natives.SDKRelativeJNI.native_getXXXX(java.lang.String) (tried Java_dji_midware_natives_SDKRelativeJNI_native_1getXXXX and Java_dji_midware_natives_SDKRelativeJNI_native_1getXXXX__Ljava_lang_String_2)
09-14 05:04:30.625 3080-3142/dji.com.importsdkdemo E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
    Process: dji.com.importsdkdemo, PID: 3080
    java.lang.UnsatisfiedLinkError: No implementation found for byte[] dji.midware.natives.SDKRelativeJNI.native_getXXXX(java.lang.String) (tried Java_dji_midware_natives_SDKRelativeJNI_native_1getXXXX and Java_dji_midware_natives_SDKRelativeJNI_native_1getXXXX__Ljava_lang_String_2)
        at dji.midware.natives.SDKRelativeJNI.native_getXXXX(Native Method)
        at com.dji.g.a.a.b.a(Unknown Source:24)
        at com.dji.g.a.a.b.a(Unknown Source:5)
        at dji.sdk.sdkmanager.DJISDKManager.<clinit>(Unknown Source:2)
        at dji.sdk.sdkmanager.DJISDKManager.getInstance(Unknown Source:0)
        at dji.com.importsdkdemo.MainActivity$1.run(MainActivity.java:121)
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:764)
09-14 05:04:30.655 3080-3080/dji.com.importsdkdemo D/OpenGLRenderer: Skia GL Pipeline
09-14 05:04:30.656 3080-3142/dji.com.importsdkdemo I/Process: Sending signal. PID: 3080 SIG: 9

Как я могу решить эту проблему

1020* Не стесняйтесь спрашивать код или скриншоты:)

1 Ответ

0 голосов
/ 20 сентября 2018

Похоже, вы используете 4.7.1 SDK и, вероятно, нацелены на современный Android SDK.Проблема, с которой вы столкнулись, заключается в том, что DJI решил объединить версию libffmpeg.so, которая несовместима с современными версиями SDK на платформе x86 (на платформе x86 работает ваш эмулятор).

У вас есть2, возможно три варианта:

  1. В Android Studio, когда вы создаете новое виртуальное устройство, когда вы выбираете Выбор образа системы, переходите на вкладку Другие изображения.Оттуда выберите любое изображение «рука» и используйте его.Эмулятор будет очень медленным с этой опцией и может вообще не работать, если ваш компьютер старый или медленный.
  2. Подключите реальное устройство Android к вашему компьютеру с включенным режимом отладки и запустите демонстрацию на этом.
  3. В вашем файле build.gradle установите для compileSdkVersion и targetSdkVersion значение 23, которое является последней версией, в которую будет загружен предоставленный DJI файл libffmpeg.so.Однако это худший вариант, так как Google больше никому не позволяет публиковать приложения с версиями SDK.Версия должна быть 26 или выше: https://support.google.com/googleplay/android-developer/answer/113469#targetsdk
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...