说明: 将android sdk更新至版本28,并将DJI sdk从4.6更新至4.9后,应用程序在任何模拟器上的工作均出现问题。在DJI sdk注册应用期间崩溃。
崩溃堆栈跟踪:
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.h.a.a.c.b(Unknown Source)
at dji.midware.e.b(Unknown Source)
at dji.sdk.sdkmanager.DJISDKManager.(Unknown Source)
at dji.sdk.sdkmanager.DJISDKManager.getInstance(Unknown Source)
at PACKAGE_NAME.dji.DJIProvider$registerTask$1.run(DJIProvider.kt:39)
at PACKAGE_NAME.dji.DJIProvider.startSDKRegistration(DJIProvider.kt:127)
at PACKAGE_NAME.MainActivity$registerDJISDK$1.onExecutorReady(MainActivity.kt:595)
at PACKAGE_NAME..helpers.ui.SimpleDelayedExecutor$executeDelayed$1.run(DelayedExecutor.kt:20)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
答案 0 :(得分:0)
DJI需要就此问题采取行动:
1)在Android Studio中,当您创建一个新的虚拟设备时,当选择“选择系统映像”时,转到“其他映像”选项卡。从那里选择任何“手臂”图像并使用它。使用此选项,模拟器将非常慢,并且如果您的计算机旧或慢,可能根本无法运行。
2)在启用调试模式的情况下,将真实的Android设备连接到您的计算机,然后在该设备上运行演示。
3)在build.gradle文件中,将compileSdkVersion和targetSdkVersion设置为22,这是DJI提供的libffmpeg.so文件将加载的最新版本。不过,这是最糟糕的选择,因为Google不再允许任何人发布具有如此低SDK版本的应用。现在该版本必须为26或更高版本:https://support.google.com/googleplay/android-developer/answer/113469#targetsdk
4)回滚到4.6:P