公司是做游戏推广的,推广的游戏包会有很多的渠道包,下发到各个渠道,用于统计推广的效果。今天运营反映有的渠道包在个别手机上提示包损坏或者签名问题,由此引发此篇文章。
因为注意到提示有签名问题所以特地查了一下as的签名方式,原因是因为Android7.0中引入了APK Signature Scheme v2。
V1:是通过ZIP条目进行验证,这样APK 签署后可进行许多修改
V2:验证压缩文件的所有字节,而不是单个 ZIP 条目
由于打渠道包是在apk签名打包完成后修改META-INF文件夹添加渠道信息,这种打渠道的方式简单实用,在V1签名的时候是没有问题的,但是V2签名更加严格所以会出现签名问题
其实在as里的打包里面已经有提示只是一直没有注意。
解决方式
在项目的build.gradle 禁用V2签名,这种方式只是暂时解决了问题,以后要研究一下使用新的打渠道包的方式。
signingConfigs {
release {
storeFile file("")
storePassword ""
keyAlias ""
keyPassword ""
v1SigningEnabled true
v2SigningEnabled false
}
}
总结
只使用V1签名也没有关系,但是在7.0上不会使用更安全的验证方式
只使用V2签名7.0以下会直接安装完显示未安装
所以,自己打包apk的时候推荐V1和V2都勾选,这样的话在Android7.0之前和之后都没有问题