您的位置:首页 > 移动开发 > Android开发

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

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

目的

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项目



多渠道打包项目改造

包的签名在build.gradle中配置,打包后自动签名。

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

代码库根目录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







[b]创建发布多渠道包项目:Android-Deploy[/b]





相关脚本





IOS打包流程

xcodebuild clean 清理build目录

xcodebuild archive 选择不同的环境/BundleID/ProvisionProfile/CodeSigningIdentify 编译,签名生成xcarchive文件放到工程根路径下的 build 文件夹里

xcodebuild -exportArchive 打包生成ipa

测试包自动上传Fir,生产包手动更新AppStore

总结

任何自动化的前提必须先规范化,针对Android多渠道打包渠道命名,apk包命名需要先统一,apk包不要多环境混用(生产环境和测试环境要分离,测试包可自定义切换);到了这里,会发现我TM乱七八糟搞了这一陀哪里酸爽了?另外一个思路是通过修改apk文件的注释,程序在启动时读取apk文件注释获取渠道名(但是Android系统直到API 19,也就是4.4以上的版本才支持data/app/.apk)

爽在哪里?

1. 打包不再需要开发本地执行(避免中断开发,多人协作时优势更为明显)
2. 多渠道打包时间在于第一个包编译生成和签名的时间,之后的无论多少渠道都只是修改包的META-INF/channel_wandoujia空文件名实现
3. 点下Jenkins按钮无需在等待打包过程,打包完成后发送消息到钉钉会话,这下爽了吗?

由于上传附件及文字限制,有时部分图片、文字可能显示不了,详情请见:http://mp.weixin.qq.com/s?__biz=MzI5ODI3NzY2MA==&mid=100000458&idx=3&sn=e7dc90c21fd205d3e7b1d82fdf8c3ce8#rd

欢迎大家一起交流。

扫描以下二维码,获取更多更精美文章!(扫码关注有意向不到的惊喜的哦!!)



关注我们微信订阅号( uniguytech100) 与服务号(uniguytech),获取更多更精美文章!

也欢迎加入【大家技术网讨论QQ群】,群号码:256175955,请备注你个人的介绍!让我们一起聊聊it的那些事!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: