1. Android签名打包报错:Lint found fatal errors while assembling a release target.
1.1. 问题
Android项目打debug 包的时候没问题,但是在打release迭代测试版本时候无法打包。Lint found fatal errors while assembling a release target.
1.2. 问题解决方案
1.2.1. 忽略处理
android {lintOptions {checkReleaseBuilds falseabortOnError false}
}
之后再次打包,确实不再报错了,但是总觉得不踏实,既然是发现了致命的错误(found fatal errors),总得知道检查到了什么错误吧!
1.2.2. 问题排查
找到在项目目录下app/build/reports/lint-results-release-fatal.html 文件,这个文件就详细描述了release时lint检测到的比较严重的结果,我们可以用浏览器打开这个文件!
当我将目标SDK更新到30+(即Android R或更高版本)时,当我想要定义PendingIntent时,我的PendingIntent.FLAG_UPDATE_CURRENT标志出现了一个lint警告Missing PendingIntent mutability flag。
如果你让你的应用在安卓12上运行,那么有一个新的PendingIntent可变性标志。如果你不想让你的PendingIntent被改变,请使用:
(1)若想避免PendingIntent被改变,请使用
PendingIntent pendingIntent;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {pendingIntent = PendingIntent.getActivity(this,0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);}else {pendingIntent = PendingIntent.getActivity(this,0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);}
(2)如果你想改变你的PendingIntent,使用以下代码:
PendingIntent pendingIntent;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {pendingIntent = PendingIntent.getActivity(this,0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_MUTABLE);}else {pendingIntent = PendingIntent.getActivity(this,0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);}}
1.3. 问题修复还原代码
修复问题后注释以下代码
android {lintOptions {checkReleaseBuilds falseabortOnError false}
}
项目可以正常签名打包。