1、Installed Build Tools revision 31.0.0 is corrupted
2、exported属性声明变更
当应用的targetSdkVersion升级到了31并且是以Android12设备作为安装平台(以下简称为以Android12为目标平台的应用),当在AndroidManifest中声明的组件,如果有加上<intent-filter>标签,必须显示的声明exported的属性,否则应用是无法在Android12的设备上进行安装的。
如果没有排除这个问题,在小米Android 12的真机上会提示用户安装失败,提示只有 INSTALL_FAILED_USER_RESTRICTED,很容易误导用户按照以往的经验去排查,耗时费力
解决方案:
1、直接通过Android studio 解析安装包,查找使用intent-filter的组件,然后依次加上exported声明。
2、针对sdk中声明的组件,可以利用AndroidManifest的merge特性,在app项目的AndroidManifest声明一样的组件,加上exported即可。
3、pendingIntent可变性变更
如果应用是以Android12为目标平台的应用,在创建PendingIntent的时候,一定要要加上可变性flag,否则运行时会抛出异常
image.png
找到相关使用处,做相应修改,可封装如下方法
public static int getFlagWithInMutable(int flag) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
flag = flag | PendingIntent.FLAG_IMMUTABLE;
}
return flag;
}
网友评论