无法构建支持Android 12的Ionic Android APK问题求助
解决方案步骤
1. 升级核心依赖版本
- 把cordova-android升级到
10.1.2及以上稳定版本,该版本已默认适配Android 12基础构建配置 - 升级项目用到的FCM相关cordova插件到最新版,旧版FCM插件会自动注入没有
android:exported属性的组件,同时会依赖低版本Gradle触发弃用报错 - 将build.gradle中的Android Gradle插件版本升到
4.2.2以上,对应Gradle wrapper版本升到6.7.1以上,匹配Android 12的构建要求
2. 全局配置android:exported属性
不要直接修改platforms目录下的AndroidManifest.xml,重新构建时手动修改的内容会被覆盖,通过config.xml配置全局注入规则即可:
在config.xml的android平台配置块中添加如下配置:
<!-- 配置主Activity的exported属性 --> <edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application/activity[@android:name='MainActivity']"> <activity android:exported="true" /> </edit-config> <!-- 批量配置带intent-filter的组件属性:对外暴露的组件填true,内部使用的服务、广播填false --> <edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application/*[intent-filter]"> <activity android:exported="true" /> <service android:exported="false" /> <receiver android:exported="false" /> </edit-config>
如果仍有特定第三方插件的组件报错,可单独针对对应组件添加配置即可。
3. 处理废弃配置提示
找到项目中所有cordova插件的gradle配置文件,将其中的compile关键字全部替换为implementation,也可以安装cordova-plugin-androidx-adapter插件自动完成该适配。
4. 清理缓存重新构建
执行以下命令清理旧的构建缓存后重新构建:
ionic cordova platform rm android ionic cordova platform add android@10.1.2 ionic cordova build android
如果依然存在manifest相关报错,可以查看合并后的完整AndroidManifest.xml文件(路径为platforms/android/app/build/intermediates/merged_manifest/debug/AndroidManifest.xml),找到所有带intent-filter但未添加android:exported的组件,逐个补充配置即可。
内容的提问来源于stack exchange,提问作者Anamik Adhikary
相关产品推荐
相关产品推荐

