Android 多渠道打包简析
前言
为了更好的统计每个来源的下载量,当我们项目打包的时候,需要打出不同渠道的包。如何打多渠道包?新一代构建工具gradle,其中的一大优势就是支持多渠道,多Apk打包。
Gradle的基础概念
flavors
创建新工程时,自动会生成默认的flavor配置。查看Moudle的build.gradle文件 如下标红处:
也可以在Project struct 的flavors标签看到,如下标红处:
WechatIMG2.jpegbuild Types
创建新工程时,也会自动的生成默认的build type 配置,查看相应Moucle的build.gradle 文件,如下标红处:
WechatIMG3.jpeg也可以在Project struct 的build Types 标签看到,如下标红处:
WechatIMG4.jpeg这些默认的配置,当没有额外的打包需求,这些默认的配置也能够满足了。
在gradle中,可以添加 buildTypes 和 productFlavors 来配置不同的打包类型,它们的关系是:
Build Type + Product Flavor = Build Variant
友盟多渠道打包
通过使用友盟的多渠道打包,分析如何使用build Types 和 Flavors 。
获取 友盟Appkey
这个就不说了,谁用谁知道。
在manifest文件配置友盟 appkey,如下:
WechatIMG5.jpeg在图中标蓝处,设置一个占位符变量UMENG_CHANNEL_VALUE动态的生成该值。如何生成,下面有说。
配置Flavors
可以在Moudle下的build.gradle文件配置你所需要的渠道,也可以在Project struct 中Flavors 标签手动添加。我这里使用的在build.gradle文件中配置:
WechatIMG6.jpeg在标蓝处的代码,生成在manifest文件占位符变量UMENG_CHANNEL_VALUE的值,该值来源与标黄处。
通过这样配置,打开Project struct ,如下:
WechatIMG7.jpeg可以看到,除了默认的配置,还多了我们在build.gradle 文件中配置的Flavors。
打开Build Varian面板,如下:
WechatIMG8.jpeg可以在build variants面板中可以选择构建的flavor;
打包
在Android studio 的Terminal 终端输入如下命令:
Mac :
|操作|命令|
|:---:|:---:|:---:|
| clean|./gradlew clean
| build|./gradlew build
| assemble|./graldew assemble
Win :
|操作|命令|
|:---:|:---:|:---:|
| clean|gradlew clean
| build|gradlew build
| assemble|graldew assemble