问题表现
今天一如既往的堆砌代码长城,但是运行 flutter 项目的时候,突然出现 APK 安装失败:
问题解决
遇到问题不要慌,先仔细看看报错信息,原因说的明明白白,是因为没有配置 android:exported
xxx.host.MainActivity: Targeting S+ (version 31 and above) requires that an explicit value for android:exported be defined when intent filters are present]
所以咱们手动配置下试试,搜索下 AndroidManifest.xml
,可以快速定位到 项目路径/.android/app/src/main/AndroidManifest.xml
,给MainActivity添加 android:exported=“true” 属性。
<activity
android:name=".MainActivity"
android:exported="true"
android:launchMode="singleTop"
...>
重新运行即可。
问题原因
现在 Android 系统的安全性和隐私,每年的新版本都有改进,而我的设备使用的 Android 12 系统,要求的是,如果Activity、Service、Broadcast,内部配置了 <intent-filter>
,就必须显式指明 android:exported = true
或者 android:exported = false
如果你想了解更多 Android 12 的新变更,可以去看看官方文档:行为变更:以 Android 12 为目标平台的应用