赞
踩
目前,android打渠道包的方式大致分为以下几种:
前2种方案
要修改项目源文件并编译打包,效率最低
productFlavors方案
android studio自带的多渠道打包方案,功能非常强大,不仅仅是识别渠道信息,还能使用不同的源代码、资源等几乎所有不同渠道的打包需求。但这种方式同样需要每个渠道都重新编译打包,对于只需要标记不同渠道信息的项目而言耗时太多
点击这里可以了解更多关于productFlavors的内容
利用android签名不校验META-INF文件夹内容的漏洞,在此文件夹内放置渠道信息文件将不受签名限制
打包签名一个无渠道信息的apk完成后,复制此apk并将不同渠道信息文件分别插入新生成的apk文件中,从而实现各渠道打包
这种方式速度非常快:900个渠道包用时不到一分钟
利用android签名不校验zip文件注释信息的漏洞,apk本质是一个zip包,将渠道信息写入zip文件注释内将不受签名限制
打包签名一个无渠道信息的apk完成后,复制此apk并将不同渠道信息字符串分别写入新生成的apk文件
100个渠道包只需10秒
是专门针对增强版签名的一种多渠道打包方案
利用V2签名的校验方式不校验APK Signing Block并且忽略APK Signing Block中多余的ID-VALUE这个特点,将渠道信息写到APK Signing Block中。
由于是直接对zip格式文件的操作,性能与添加zip注释方式相当
为了提高Android系统的安全性,Google从Android 7.0开始增加一种新的增强签名模式,从Android Gradle Plugin 2.2开始,构建系统在打包应用后签名时默认使用APK signature scheme v2,该模式在原有的签名模式上,增加校验APK的SHA256哈希值,如果签名后对APK作了任何修改,安装时会校验失败,提示没有签名无法安装
android7.0下快速打渠道包的兼容方案
android {
...
defaultConfig { ... }
signingConfigs {
release {
storeFile file("myreleasekey.keystore")
storePassword "password"
keyAlias "MyReleaseKey"
keyPassword "password"
v2SigningEnabled false
}
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。