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

前言

你好!这里记录自己在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;

MSDK 与 UXSDK 的最新版本号不一致,如何在build.gradle中配置?

截至本文更新之时,MSDK最新正式版本为4.16.4,而UXSDK最新为4.16.2。如果直接同时导入各自最新的版本号时,会引发版本冲突(UX SDK 中引用了同版本的msdk);

故需要配置排除UXSDK中自动引用的msdk版本;
参考引用配置如下:

    implementation("com.dji:dji-sdk:4.16.4")
    compileOnly "com.dji:dji-sdk-provided:4.16.4"

    implementation("com.dji:dji-uxsdk:4.16.2", {
        exclude module: 'dji-sdk'
    })

问题待定…

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MrRobot_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值