正在上传图片(0/1)

DJI Android SDK - Android X 迁移指南

 1
手机看帖 2 1941
背景
DJI Android SDK 从4.11版本开始,支持了Android X,使用DJI Android SDK接入AndroidX的步骤和常见的问题总结如下 :

第一步:
务必先升级Android Studio到最新稳定版,老版本经常出现编译AndroidX失败的情况,升级方式如图所示:



第二步:
升级完成后,使用Android Studio提供的Migrate to AndroidX,做初步的适配。

这里会在gradle.properties加上:

1)android.useAndroidX=trueAndroid 插件会使用对应的 AndroidX 库(而非支持库)。
2)android.enableJetifier=trueAndroid 插件会通过重写其二进制文件来自动迁移现有的第三方库以使用 AndroidX。

如果没加,则手动加上。Migrate to AndroidX不一定能成功跑完,如果gradle版本和gradle android plugin版本过老,会提示升级,这里根据提示修改版本号。

第三步:

可以初步试着编译一下,如果编译失败,则根据提示进行修改,一般会有如下情况:

1)找不到某些AndroidX的包,可能是之前没删干净android.support的导包,在build.gradle添加对应的AndroidX导包,具体的可以参考谷歌官网文档: https://developer.android.google.cn/jetpack/androidx/migrate,里面有类映射的说明。

2)xml文件里的view不对,可能是依旧使用的android.support里的view,注意修改。
比如说旧的RecyclerView:
在AndoridX上需要修改为:

3)自身项目依赖老的gradle的函数,比如说stringfog的老版本,这就需要根据自身项目使用来处理了,如果是三方的包,建议升级为支持AndroidX的版本,如果不再更新,则需要考虑下替代品。

第四步:

能成功打包APK后,还需要验证功能是否正常,如果异常,通常都是Class Not Found,一般这么处理:

1)确认源码里不再有android.support的东西(gradle外部依赖不算)。
2)如果缺失的是AndroidX的类,根据类名正确导包。
3)混淆问题,可能是混淆了AndroidX的包,添加正确的Keep方式,这里是DJI Sample的Keep文件,可以参考:https://github.com/dji-sdk/Mobile-SDK-Android/blob/master/Sample%20Code/app/proguard-rules.pro
4)由于gradle的升级,混淆语法规则有一些改动,之前的混淆语句可能无法继续工作,需要检查。

总结:

DJI Android SDK的Sample已经升级到了Android X,如果碰到一些问题,可以参考官方Sample:https://github.com/dji-sdk/Mobile-SDK-Android
AndroidX能否升级,和具体项目密切相关,这里只有一些通用的问题,如果有特殊情况,则需要具体分析了。
评论
上传
你需要登录之后才能回帖    登录 | 注册
codelang   2020-4-26 3#
由于 MSDK-4.11 是用 androidx 写的,所以,要使用最新版本的 MSDK 需要将自己的项目迁移到 androidx 下,如果不迁移,低版本的 MSDK 不支持 android 10 ,运行会崩溃

MSDK-4.11 发布时就已经迁移拉,没有什么问题
内涵阿哥  Mavic Air认证用户 2020-4-29 4#
赞, 写的很详细
取消 点赞 评论
分享至:
回复:
上传
取消 评论
快速回复 返回顶部 返回列表