Android 对DJISDKManager的任何调用都会导致致命的崩溃,没有错误或异常-4.11

Android 对DJISDKManager的任何调用都会导致致命的崩溃,没有错误或异常-4.11,android,androidx,dji-sdk,Android,Androidx,Dji Sdk,我最近更新了我们的应用程序,使用AndroidX和DJI SDK 4.11,其中包括更新这些版本: DJI SDK from 4.10 to 4.11 compileSdkVersion from 27 to 28 ext.kotlin_version from 1.2.61 to 1.3.41 com.android.tools.build:gradle from 3.2.1 to 3.4.1 gradle from 4.6 to 5.1.1 增加 我还包括在gradle文件和manifes

我最近更新了我们的应用程序,使用AndroidX和DJI SDK 4.11,其中包括更新这些版本:

DJI SDK from 4.10 to 4.11
compileSdkVersion from 27 to 28
ext.kotlin_version from 1.2.61 to 1.3.41
com.android.tools.build:gradle from 3.2.1 to 3.4.1
gradle from 4.6 to 5.1.1
增加

我还包括在gradle文件和manifest文件中

gradle:
android {
    useLibrary 'org.apache.http.legacy'
}

manifest:
<uses-library android:name="org.apache.http.legacy" android:required="false"/>
gradle:
安卓{
useLibrary'org.apache.http.legacy'
}
显示:
使用传统http调用修复DJI SDK的异常

但是,当我调用DjiskManager(如getInstance())时,它会崩溃,没有任何错误或异常。这是调试阶段,所以proguard此时不应该剥离任何重要的内容。我在互联网上搜索,试图找到不同的答案或可能性,并做出了上述改变,解决了不同的问题,但这一次我被难住了。有没有人有过类似的经历并想出了解决办法


编辑:我启用了Java异常断点和异常断点,并获得了此异常:android.system.ErrnoException:open failed:enoint(没有这样的文件或目录)

此配置正在工作,我可以验证

build.gradle:3.5.1。(如果使用3.5,则崩溃) (二)

科特林:1.3.50

BuildToolsVersion29.0.2

编译DK29版

此外,检查包装,它们已更改,对照样品进行验证


您可能还需要添加录制音频的权限,其中有一条说明,但我现在找不到

try
catch
中包装该调用,或者手动设置断点,然后单步执行。我已经尝试过了,但致命异常只会终止应用程序。捕获没有捕获它,它只是关闭程序。单步执行该行会突然断开调试器的连接,程序进入一个循环,在该循环中崩溃,然后再次启动,然后再次崩溃。。。尝试过滤logcat输出。或者该项目是否包含用C/C++编写的本机程序集?尽管如此,在崩溃时仍应记录一些内容。。。当前的异常消息只是表示缺少某个文件或目录。不确定他所说的“下一个版本”是什么意思,但androidx应该得到支持:(androidx存在几个问题,并且还存在断开连接的问题)。从DJI 4.11开始,androidx是受支持的。这就是所提到的“下一个版本”。我在原始文章的底部编辑了我启用了Java/General异常断点,所以若抛出任何异常,它就会命中断点。我能够得到以下错误:android.system.ErrnoException:open失败:enoint(没有这样的文件或目录),但是我无法确定它试图打开什么,并且它似乎是在第一次使用djiskmanager(单例)时调用的,导致崩溃。我已在通话前验证应用程序是否具有写入/读取\u外部\u存储权限谢谢,我尝试了你的建议。在SDK版本29中使用它会导致应用程序崩溃,因此我将其恢复为28,但所有其他应用程序都会按照您的建议进行更新。然而,当我构建发布版本时,似乎有些东西被剥离了,尽管我匹配了示例应用程序中的proguard规则和包选项,所以当我调用它时它崩溃了(它在调试构建中运行良好):djiskManager.getInstance().registerApp(context,productManager)Gradle版本是我在这里的关键。任何高于3.5.1的内容都会导致发布确切的问题。是的,DJI没有更新其Proguard规则,在几个月的反复请求中,他们仍然没有提供允许Proguard正常运行所需的详细信息。如果他们(DJI)能像现在大多数专业图书馆一样,将Proguard规则构建到图书馆中,那将是一件好事,但迄今为止,他们也没有幸运地做到这一点。
gradle:
android {
    useLibrary 'org.apache.http.legacy'
}

manifest:
<uses-library android:name="org.apache.http.legacy" android:required="false"/>