Android多渠道打包这样做才酸爽!?

前言

  多渠道主要目的是为了统计各个应用市场用户数据分析(比如活跃数,崩溃率等),收集用户信息,这时需要唯一标识来区分这些渠道,本文主要针对多渠道(几百个渠道甚至更多的情况)如何快速打包?

目的

  • Jenkins集成Gradle实现打包自动化
  • 通过Jenkins参数化构建实现自定义环境和渠道打包,签名
  • 测试包自动上传fir并通过钉钉发送通知
  • 正式包按版本归档到OSS,发布时拷贝包到发布目录
  • 自动刷新CDN

环境说明

  • 系统 : Centos6.5 x64
  • jdk-7u79-linux-x64
  • android-sdk_r24.4.1-linux
  • gradle-2.2.1
  • Python-2.7.10(操作DingTalk和OSS API)
  • Jenkins2.0/Tomcat-7.0.65

配置环境

1.安装JDK

2.安装Python2.7.10

3.安装Android的SDK

4.安装tomcat和jenkins

5.配置环境变量,启动服务

6.安装Android SDK依赖包

####安装更新对应版本的SDK

手动编译测试Android项目

多渠道打包项目改造

  1. 包的签名在build.gradle中配置,打包后自动签名
  2. 由于META-INF目录下是存放签名信息的,用来保证apk包的完整性和安全,在生成apk时对文件做校验计算并把结果存放在META-INF目录中,安装apk包时应用管理器会按照同样的算法对包里的文件做校验,如果和META-INF中的内容不一致,则无法安装,通过修改apk包在重新打包基本不可能,以此来保证apk包的安全,因此在打完第一个包时,可以在META-INF目录中添加一个channel_wandoujia空文件,代码匹配这个文件获取渠道名wandoujia,来快速实现多渠道打包的目的
  3. 代码库根目录channel文件存放渠道名

Android多渠道打包流程

基于上述方式实现多渠道打包流程如下:

  • 执行gradlew clean清除build目录
  • 执行gradlew assemble编译打包Debug/Release(已自动签名)
  • 上传Debug包到Fir
  • 通过DingTalk发送通知信息到QA讨论组(发送提测apk包版本,下载地址及扫描下载二维码)
  • 提测不通过,修复bug后再次执行前四步
  • 提测通过后,点击Jenkins打包归档多渠道按钮,将执行生成多渠道包并归档包到本地目录/data/2.0.1/xxx.apk
  • 可选择此步上传归档文件到OSS
  • 点击Jenkins发布按钮将最新版本相关渠道归档拷贝至OSS发布目录
  • 刷新CDN生效
  • 通过DingTalk发送通知信息到QA讨论组哪些渠道已经发布

配置步骤

配置Jenkins


创建多渠道包归档项目:Android-Archive


创建发布多渠道包项目:Android-Deploy

相关脚本

IOS打包流程

  • xcodebuild clean 清理build目录
  • xcodebuild archive 选择不同的环境/BundleID/ProvisionProfile/CodeSigningIdentify 编译,签名生成xcarchive文件放到工程根路径下的 build 文件夹里
  • xcodebuild -exportArchive 打包生成ipa
  • 测试包自动上传Fir,生产包手动更新AppStore
  • 具体可参考脚本 https://github.com/geekwolf/AppDeployment/blob/master/IOSDeploy.sh

总结

任何自动化的前提必须先规范化,针对Android多渠道打包渠道命名,apk包命名需要先统一,apk包不要多环境混用(生产环境和测试环境要分离,测试包可自定义切换);到了这里,会发现我TM乱七八糟搞了这一陀哪里酸爽了?另外一个思路是通过修改apk文件的注释,程序在启动时读取apk文件注释获取渠道名(但是Android系统直到API 19,也就是4.4以上的版本才支持data/app/.apk)
爽在哪里?
1. 打包不再需要开发本地执行(避免中断开发,多人协作时优势更为明显)
2. 多渠道打包时间在于第一个包编译生成和签名的时间,之后的无论多少渠道都只是修改包的META-INF/channel_wandoujia空文件名实现
3. 点下Jenkins按钮无需在等待打包过程,打包完成后发送消息到钉钉会话,这下爽了吗?

参考文档

Gradle入门 http://www.androidchina.net/2155.html
Android签名 http://www.tuicool.com/articles/2eMZJfu

Android多渠道打包这样做才酸爽!?》上有1条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注