文档章节

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

unibigbear
 unibigbear
发布于 2016/05/18 16:20
字数 1189
阅读 21
收藏 0

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

 

目的

 

  • 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

总结

       任何自动化的前提必须先规范化,针对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的那些事!

 

本文转载自:http://mp.weixin.qq.com/s?__biz=MzI5ODI3NzY2MA==&mid=100000458&idx=3&sn=e7dc90c21fd205d3e7b1d82fd...

共有 人打赏支持
unibigbear
粉丝 1
博文 70
码字总数 5874
作品 0
闵行
Android studio 使用心得(十)---android studio 多渠道打包(三)

关于使用android studio 如何打包 大家可以看这两篇文章 Android studio 使用心得(四)---android studio 多渠道打包 Android studio 使用心得(四)---android studio 多渠道打包(二) 真正的项...

veidy
2015/07/28
0
0
Android studio 使用心得(四)---android studio 多渠道打包(二)

版权声明:本文出自veidy的博客,转载必须注明出处 转载请注明出处:http://my.oschina.net/aibenben/blog/370985 Android studio 使用心得(四)---android studio 多渠道打包 这篇文章讲了一...

veidy
2015/01/23
0
3
Android多渠道打包相关介绍

一、多渠道打包概述 由于国内存在着有众多的应用市场,在不同的应用市场可能有不同的统计需求,为此Android开发人员需要为每个应用市场发布一个安装包,这里就引出了Android的多渠道打包。在...

Ruheng
06/23
0
0
热修复技术的实践之旅——微信TinkerPatch热修复结合Walle多渠道打包的详解

本文导语: 本文的核心内容介绍: (1)对比当前市场上的热修复方案,对Tinker热修复方案进行了简单的介绍。 (2)详细讲解了微信Tinker的完整接入过程,文末提供了一个自己写的非常轻量的D...

懂音乐码虫
05/29
0
0
Gradle 构建 android 应用常见问题解决指南

前言 android gradle 插件已经发展到0.5.7,同时gradle 本身也到了1.8,相比两个月前,android gradle 更快,更完善,也更好用了,为了让各位androider 早日用上gradle这样的神器,特地写一篇关于g...

打杂程序猿
2013/09/30
0
6

没有更多内容

加载失败,请刷新页面

加载更多

你为什么在Redis里读到了本应过期的数据

一个事故的故事 晚上睡的正香突然被电话吵醒,对面是开发焦急的声音:我们的程序在访问redis的时候读到了本应过期的key导致整个业务逻辑出了问题,需要马上解决。 看到这里你可能会想:这是不...

IT--小哥
今天
2
0
祝大家节日快乐,阖家幸福! centos GnuTLS 漏洞

yum update -y gnutls 修复了GnuTLS 漏洞。更新到最新 gnutls.x86_64 0:2.12.23-22.el6 版本

yizhichao
昨天
5
0
Scrapy 1.5.0之选择器

构造选择器 Scrapy选择器是通过文本(Text)或 TextResponse 对象构造的 Selector 类的实例。 它根据输入类型自动选择最佳的解析规则(XML vs HTML): >>> from scrapy.selector import Sele...

Eappo_Geng
昨天
4
0
Windows下Git多账号配置,同一电脑多个ssh-key的管理

Windows下Git多账号配置,同一电脑多个ssh-key的管理   这一篇文章是对上一篇文章《Git-TortoiseGit完整配置流程》的拓展,所以需要对上一篇文章有所了解,当然直接往下看也可以,其中也有...

morpheusWB
昨天
5
0
中秋快乐!!!

HiBlock
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部