You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已显式指定android:exported仍报错的DJI SDK Android集成问题求助

问题根因

你当前项目的targetSdkVersion设置为31(对应Android 12版本),Android 12及以上系统要求所有带intent-filter的四大组件(Activity、Service、BroadcastReceiver、ContentProvider)必须显式声明android:exported属性。你自行在主Manifest中配置的自定义组件已添加该属性,但你集成的DJI SDK 4.12版本发布时间早于Android 12规范落地,SDK内部自带的组件(尤其是未在你主Manifest中显式配置的服务、广播接收器、子Activity等)没有配置android:exported属性,在Manifest合并阶段就会触发报错,该问题和minSdk的配置无关。

可行解决方案

方案一:降级编译/目标SDK版本(推荐,兼容性最好)

DJI SDK 4.x系列对Android 12+的适配存在较多已知兼容性问题,直接降版本可以避免后续运行时出现其他未知异常,修改build.gradle (:app)中的参数即可:

android {
    // 将compileSdk从31改为30
    compileSdk 30

    defaultConfig {
        applicationId "com.dji.importSDKDemo"
        minSdk 19
        // 将targetSdk从31改为30
        targetSdk 30
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    // 其余配置保持不变
}

修改后同步Gradle重新构建即可解决报错。

方案二:在主Manifest中强制补全属性(适合需要保留targetSdk31的场景)

  • 首先给你主Manifest中已经声明的DJI SDK组件补全android:exported属性,当前你的DJIGlobalService未配置该属性,修改如下:
<service 
    android:name="dji.sdk.sdkmanager.DJIGlobalService"
    android:exported="false">
</service>
  • 给Manifest根节点添加tools命名空间,用于强制覆盖SDK内部组件的属性配置:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.dji.importSDKDemo">
  • 若修改后仍有报错,可在<application>标签中添加tools:replace="android:exported",强制合并所有组件的exported属性。

内容的提问来源于stack exchange,提问作者Prometheus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 14:45:03