android多渠道打包方案总结及APK signature scheme v2兼容

常见方案

目前,android打渠道包的方式大致分为以下几种:

  1. 将渠道信息hard code在代码中或manifest文件中
  2. 项目内放置渠道文件,然后代码中读取该文件来识别渠道
  3. android studio 的productFlavors方案
  4. 美团META-INF方式打包方案
  5. 添加zip注释方式打包方案
  6. 美团Walle(V2多渠道打包方案)

方案特点

前2种方案

要修改项目源文件并编译打包,效率最低

productFlavors方案

android studio自带的多渠道打包方案,功能非常强大,不仅仅是识别渠道信息,还能使用不同的源代码、资源等几乎所有不同渠道的打包需求。但这种方式同样需要每个渠道都重新编译打包,对于只需要标记不同渠道信息的项目而言耗时太多
点击这里可以了解更多关于productFlavors的内容

美团方式

利用android签名不校验META-INF文件夹内容的漏洞,在此文件夹内放置渠道信息文件将不受签名限制
打包签名一个无渠道信息的apk完成后,复制此apk并将不同渠道信息文件分别插入新生成的apk文件中,从而实现各渠道打包
这种方式速度非常快:900个渠道包用时不到一分钟

添加zip注释方式

利用android签名不校验zip文件注释信息的漏洞,apk本质是一个zip包,将渠道信息写入zip文件注释内将不受签名限制
打包签名一个无渠道信息的apk完成后,复制此apk并将不同渠道信息字符串分别写入新生成的apk文件
100个渠道包只需10秒

美团Walle

是专门针对增强版签名的一种多渠道打包方案
利用V2签名的校验方式不校验APK Signing Block并且忽略APK Signing Block中多余的ID-VALUE这个特点,将渠道信息写到APK Signing Block中。

由于是直接对zip格式文件的操作,性能与添加zip注释方式相当

android 7.0 v2增强版签名

为了提高Android系统的安全性,Google从Android 7.0开始增加一种新的增强签名模式,从Android Gradle Plugin 2.2开始,构建系统在打包应用后签名时默认使用APK signature scheme v2,该模式在原有的签名模式上,增加校验APK的SHA256哈希值,如果签名后对APK作了任何修改,安装时会校验失败,提示没有签名无法安装

APK signature scheme v2

android7.0下快速打渠道包的兼容方案

  • 推荐使用的方案: Walle
  • 官方方案:在build.gradle内的signConfigs中添加 v2SigningEnabled false 来禁用v2版签名方式
  android {
    ...
    defaultConfig { ... }
    signingConfigs {
      release {
        storeFile file("myreleasekey.keystore")
        storePassword "password"
        keyAlias "MyReleaseKey"
        keyPassword "password"
        v2SigningEnabled false
      }
    }
  }
  • 先打出未签名的apk,再复制该apk并使用美团方式或注释方式为其添加渠道信息,然后再签名。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值