最近新建了一个项目,在build.gradle中配置好了签名,在执行打包的时候打出的包显示已签名,但是在上传市场的时候提示未签名。于是排查了好久,发现在build.gradle中配置的minsdk =24,会导致不使用V1签名,于是我使用apksigner验证了一下,确实是没有使用V1签名
也就是apk的META-INF下不会生成相关文件
因此怀疑是应用市场在检测APK是否签名时仍然使用的是V1签名校验的方式。
按道理apk设置了minsdk>=24应用市场就不需要校验V1签名,只需要校验V2即可,因为该APK根本不可能安装到仅支持V1签名的设备上。但是为了上传市场只能去适用应用市场的规则。因此有两种方式来解决这个问题:
1.将minsdk设置成<=23
2.保持minsdk不变,新增v1SigningEnabled true配置
signingConfigs {
release {
//...省略其他配置
v1SigningEnabled true
}
}
参考:Android apk之v1、v2、v3签名 - 知乎