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

Flutter应用适配Android 12报错:需指定android:exported属性

解决Flutter Android 12适配Manifest合并失败问题

问题根源

Android 12及更高版本强制要求所有<activity>、<service>、<receiver>组件必须显式声明android:exported属性(取值true或false),而Flutter debug环境依赖的androidx.test.core测试库中,EmptyActivity和EmptyFloatingActivity两个默认组件未配置该属性,直接触发Manifest合并失败,导致assembleDebug任务执行中断。

可行解决方法

方法1:在主Manifest中覆盖声明组件

打开项目的android/app/src/main/AndroidManifest.xml,添加以下代码显式指定两个测试Activity的android:exported属性:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.your.package.name"> <!-- 替换为你的项目包名 -->

    <!-- 原有代码保留 -->

    <!-- 覆盖测试库的EmptyActivity -->
    <activity
        android:name="androidx.test.core.app.InstrumentationActivityInvoker$EmptyActivity"
        android:exported="false" />

    <!-- 覆盖测试库的EmptyFloatingActivity -->
    <activity
        android:name="androidx.test.core.app.InstrumentationActivityInvoker$EmptyFloatingActivity"
        android:exported="false" />

</manifest>

方法2:升级测试依赖库版本

androidx.test.core的1.5.0及以上版本已修复该问题,自动为组件添加android:exported属性。打开android/build.gradle文件,更新依赖版本:

dependencies {
    // 其他依赖项保留
    androidTestImplementation 'androidx.test:core:1.5.0'
}

方法3:临时降级编译SDK(不推荐)

若仅需临时调试,可将编译SDK版本降至Android 11(API 30),绕过Android 12的强制检查。修改android/app/build.gradle:

android {
    compileSdkVersion 30 // 从31+改为30

    defaultConfig {
        targetSdkVersion 30
        // 其他配置保留
    }
}

验证修复

执行以下命令清理并重新构建项目,确认报错消除:

flutter clean
flutter run

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 07:15:32