前言:
关于Android渠道打包是一个比较老的话题,今天主要记录总结一下多渠道打包以及如果动态配置修改一些资源属性。今天以公司实际需求为例进行演示,由于项目复用很多公共的业务组件,而且业务组件之间的跳转采用Scheme协议,每个业务组件的host地址不变,所以需要在打包的时候动态修改scheme协议名字。为了方便举例,首先我们这里假设我们一个App要打出两个不同的渠道,方便进行数据统计。
第一步声明一个渠道参数 AndroidManifest.xml中
<meta-data android:name="APP_CHANNEL" android:value="external" />
为了方便通过gradle自动替换,value需要替换成标记位的方式
<meta-data android:name="APP_CHANNEL" android:value="${APP_CHANNEL}" />
第二步在gradle中利用productFlavors声明渠道类型,
比如我们这里声明一个外部版本一个内部版本,manifestPlaceholders 替换AndroidManifest中的
${APP_CHANNEL}值
productFlavors { external { manifestPlaceholders = [APP_CHANNEL: "external"] } internal { manifestPlaceholders = [APP_CHANNEL: "internal"] &n