java - ImportSDKDemo 教程 Issue : No implementation found for byte[] dji. midware.natives.SDKRelativeJNI.native_getXXXX(java.lang.String)

标签 java android sdk dji-sdk

我在尝试模拟 ImportSDKDemo 项目时遇到问题。

我正在关注这个tutorial ,但缺少信息,例如关于MainActivity.class

当我尝试运行仿真时,出现以下错误:

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)

这是整个日志:

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

我该如何解决这个问题?

随时索取代码或屏幕截图:)

最佳答案

看来您正在使用 4.7.1 SDK,并且可能以现代 Android SDK 为目标。您遇到的问题是 DJI 决定 bundle 一个与 x86 平台上的现代 SDK 版本不兼容的 libffmpeg.so 版本(x86 平台是您的模拟器运行的平台)。

您有 2 个,可能是三个选项:

  1. 在 Android Studio 中,当您创建新的虚拟设备时,当您选择系统镜像时,转到其他镜像选项卡。从那里选择任何“ ARM ”图像并使用它。使用此选项时模拟器会非常慢,如果您的计算机较旧或速度较慢,则模拟器可能根本无法运行。
  2. 将真实的 Android 设备连接到启用 Debug模式的计算机,并在其上运行演示。
  3. 在您的 build.gradle 文件中,将 compileSdkVersion 和 targetSdkVersion 设置为 23,这是 DJI 提供的 libffmpeg.so 文件将加载的最新版本。不过,这是最糟糕的选择,因为谷歌不再允许任何人发布 SDK 版本如此低的应用程序。现在版本必须是26或以上:https://support.google.com/googleplay/android-developer/answer/113469#targetsdk

关于java - ImportSDKDemo 教程 Issue : No implementation found for byte[] dji. midware.natives.SDKRelativeJNI.native_getXXXX(java.lang.String),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52332329/

相关文章:

java - Android UI fragment 。由于按下按钮而更改 fragment

c# - 调用 Windows 放大镜

java - 异步调用两个 Java 方法

java - JSF javax.el.PropertyNotFoundException : Target Unreachable, 标识符 'home' 解析为空

java - EnumSet类,运行时获取元素类型

android - 使用新的 twitter sdk 开始编译应用程序时出错

android - 如何同时打开Android SDK和AVD Manager

java - Tomcat & Spring Web - 找不到类异常 org.springframework.web.context.ContextLoaderListener

android - 在 ListView 中选择多个项目

android - 如何在 AndEngine 中创建自定义字体?