大疆DJI Android Mobile SDK 开发问题汇总

彭令秋
2023-12-01

前言

你好!这里记录自己在Android平台集成&开发大疆 DJI Mobile SDK的过程中,遇到的一些问题的汇总,可能原因与解决建议,希望能帮到遇到相同问题的朋友,节省大家的时间 。

SDK Api ANR(调用DJISDKManager.getInstance() 死锁、无响应)

2021-11-01记录

个人情况:在参照官方demo以及网上其他文章介绍下,集成好SDK准备测试SDK的激活注册。但是让人头疼的是每次一旦调用到DJISDKManager.getInstance()相关的api接口,实测app就会ANR(无响应),最终一次次对比官方demo 后,发现了问题所在:

在清单文件AndroidManifest.xml中,需要配置 application 标签的 android:extractNativeLibs=“true” 属性值,测试后无恙.

extractNativeLibs 属性值(APK瘦身属性) 介绍

  • 配置 android:extractNativeLibs = true 时,gradle打包时会对工程中的so库进行压缩,最终生成apk包的体积会减小;
  • 但用户在手机端进行apk安装时,系统会对压缩后的so库进行解压,从而造成用户安装apk的时间变长
  • android:extractNativeLibs 默认值与 minSdkVersion 以及 Android Gradle plugin 的版本相关:
  • minSdkVersion < 23 或 Android Gradle plugin < 3.6.0情况下,打包时 android:extractNativeLibs=true;
  • minSdkVersion >= 23 并且 Android Gradle plugin >= 3.6.0情况下,打包时android:extractNativeLibs=false;

ClassNotFoundException: Didn’t find class "org.apache.http.params.BasicHttpParams

2021-11-01记录

Android 9.0 版本遇到的问题

解决方式:::

  1. 清单文件AndroidManifest.xml 中,添加 application 属性 android:usesCleartextTraffic=“true”
    2.再在application中添加子标签
    <uses-library android:name="org.apache.http.legacy" android:required="false" />

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

这里是sdk中使用到的网络请求方式,个人开发中,遇到9.0版本的两种网络请求方式:

  1. 后端服务器接口使用https进行接口访问;
  2. 项目配置 network-security-config 文件 , 具体方法请自行搜索,不再赘述.

M300机型+H20系列相机无法进入媒体下载模式(Media download)

官方文档中切换模式,常规使用Camera.setMode()
我的飞机和相机分别是M300、H20T型号,常规 切换失败,错误提示固件不支持

解决方案:
使用 setFlatMode() 切换为拍照、摄像模式;
使用enterPlayBack()exitPlayBack() 切换或退出 下载&回放模式(可以使用Media download模式功能)

MSDK 4.15.1 在特殊无人型或相机机型中,获取文件列表快照(getSDCardFileListSnapshot)为空(size=0)

刚解决了上面模式问题,结果刷新文件列表状态后,获取文件列表快照总是返回 空集合!!
可是使用DJI Pilot读取是存在照片和视频的,最后证实是大疆 4.15.1 版本SDK在M300机型或H20系列相机上的BUG。
请查询
官方已知问题

解决方案:
1、降低SDK版本号,本人实测4.15版本没有这个问题;
2、等待官方修复,使用下一个版本的SDK;

问题待定…

 类似资料: