同时集成DJI Mobile SDK与UX SDK后Android应用注册失败求助
解决DJI SDK注册失败(Register sdk fails)问题
我之前在把DJI UX SDK集成到现有Mobile SDK项目时,也碰到过一模一样的问题。核心原因是你同时引入了Mobile SDK和UX SDK的依赖——实际上UX SDK是基于Mobile SDK封装的上层库,它内部已经包含了Mobile SDK的全部核心功能,重复引入会导致SDK初始化时的冲突,最终触发注册失败的错误。
解决方案:调整依赖配置
你只需要保留UX SDK的依赖即可,移除独立的Mobile SDK依赖。修改你的build.gradle中的dependencies块如下:
dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:multidex:1.0.3' implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support:animated-vector-drawable:28.0.0' implementation 'com.android.support:support-media-compat:28.0.0' implementation 'com.android.support:support-v4:28.0.0' implementation 'com.android.support:recyclerview-v7:28.0.0' implementation 'com.android.support.constraint:constraint-layout:1.1.3' implementation 'com.amap.api:map2d:5.2.0' implementation 'com.amap.api:3dmap:5.5.0' implementation 'com.amap.api:search:5.5.0' implementation 'com.amap.api:location:3.6.1' // 只保留UX SDK和provided依赖,移除独立的dji-sdk implementation ('com.dji:dji-uxsdk:4.9') compileOnly ('com.dji:dji-sdk-provided:4.9') }
是否需要同时使用两个SDK?
完全不需要,二者的关系是:
- UX SDK:包含Mobile SDK的所有基础功能,同时提供了封装好的UI组件(比如飞行控制界面、相机参数调节面板等),如果你需要快速实现这些现成的UI,只用UX SDK就足够。
- Mobile SDK:如果你不需要任何UX组件,只需要底层的无人机控制、数据交互能力,单独使用Mobile SDK即可。
既然你要集成UX SDK,只保留它的依赖就可以覆盖原来Mobile SDK的所有功能,还能避免依赖冲突。
额外检查点
虽然你提到包名和App ID没问题,但还是建议再确认一下:
- AndroidManifest.xml中配置的DJI App Key的meta-data是否正确,格式如下:
<meta-data android:name="com.dji.sdk.API_KEY" android:value="你的App Key"/> - 确保生成App Key时使用的包名和
build.gradle中的applicationId完全一致(你的debug配置加了.debug,如果是debug环境测试,需要给debug包名也生成对应的App Key,或者暂时去掉debug的applicationIdSuffix测试)。
内容的提问来源于stack exchange,提问作者ids.med.alc
相关产品推荐
相关产品推荐

