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

已设置targetSDK 31的Flutter应用无法在Android 12设备及Google Play安装且模拟器安装后闪退的问题求助

排查Android 12上Flutter应用安装失败及闪退问题

针对你遇到的Android 12安装失败、添加配置后又闪退的问题,结合你的build.gradle配置,我整理了几个关键排查方向,你可以一步步来验证:

1. 必须补全Android 12要求的android:exported属性

这是Android 12最常见的安装失败原因——所有带有<intent-filter>的组件(Activity、Service、BroadcastReceiver)都必须显式声明android:exported属性,不能默认省略。

你提到添加某个值设为true后能安装但闪退,大概率是只给部分组件加了这个属性,漏掉了其他关键组件(比如主Activity的依赖组件)。请检查你的AndroidManifest.xml:

  • 主启动Activity必须设置android:exported="true"(因为系统要启动它):
<activity
    android:name=".MainActivity"
    android:exported="true" <!-- 必须显式添加 -->
    android:launchMode="singleTop"
    android:theme="@style/LaunchTheme">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity>
  • 如果你的应用里还有其他带<intent-filter>的Service、Receiver,也必须给它们加上android:exported(根据组件功能选true或false)。

2. 升级Flutter版本以适配Android 12

你当前用的Flutter 2.5.0是2021年9月发布的,而Android 12在同年10月才正式推出,这个版本的Flutter对Android 12的适配存在一些已知缺陷(比如默认不处理exported属性)。

建议你升级到Flutter稳定版(至少2.8以上),执行命令:

flutter upgrade

升级后重新编译打包,很多适配问题会自动解决。

3. 修正Multidex配置(适配AndroidX)

你的build.gradle里用的是旧版的Support库Multidex,但targetSdkVersion 31应该搭配AndroidX的Multidex,否则可能导致运行时崩溃:

  • 替换Multidex依赖:
// 注释掉旧的support库依赖
// implementation 'com.android.support:multidex:1.0.3'
// 添加AndroidX版本
implementation 'androidx.multidex:multidex:2.0.1'
  • 在defaultConfig里启用Multidex:
defaultConfig {
    // ...其他配置
    multiDexEnabled true
}
  • 如果你的应用有自定义Application类,让它继承MultiDexApplication,或者在attachBaseContext方法里添加:
@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
}

4. 关闭Debug模式的混淆(先排除干扰)

你的build.gradle里Debug模式也开了混淆和ProGuard,这很容易导致调试阶段的闪退问题。先关闭Debug模式的混淆,看是否能解决闪退:

debug{
    minifyEnabled false // 改为false
    useProguard false   // 改为false
    // 暂时注释掉proguard配置
    // proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}

重新编译Debug版安装,如果不再闪退,说明是ProGuard规则有问题,需要给Flutter添加必要的混淆规则(Release模式下):
在proguard-rules.pro里添加:

-ignorewarnings
-keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.**  { *; }
-keep class io.flutter.util.**  { *; }
-keep class io.flutter.view.**  { *; }
-keep class io.flutter.**  { *; }
-keep class io.flutter.plugins.**  { *; }
-dontwarn io.flutter.**

5. 通过Logcat定位具体错误

如果以上步骤还是没解决,建议用Logcat查看具体的错误日志:

  • 连接设备后,执行命令:
adb logcat *:E
  • 尝试安装或启动应用,查看输出的错误信息(比如类找不到、权限问题等),这些日志能直接帮你定位核心问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.01 00:44:09