象刀设计网站,京东网上商城和京东有什么区别,重庆大渡口营销型网站建设公司哪家专业,如何推广网页目录一、简介二、Gradle多渠道打包1、普通做法2、Gradle多渠道打包一、简介
因为国内Android应用分发市场的现状#xff0c;我们在发布APP时#xff0c;一般需要生成多个渠道包#xff0c;上传到不同的应用市场。这些渠道包需要包含不同的渠道信息#xff0c;在APP和后台交…
目录一、简介二、Gradle多渠道打包1、普通做法2、Gradle多渠道打包一、简介
因为国内Android应用分发市场的现状我们在发布APP时一般需要生成多个渠道包上传到不同的应用市场。这些渠道包需要包含不同的渠道信息在APP和后台交互或者数据上报时会带上各自的渠道信息。这样我们就能统计到每个分发市场的下载数、用户数等关键数据。
二、Gradle多渠道打包
1、普通做法
通常情况下的做法是在 AndroidManifest 中增加渠道号
meta-data android:nameSDK_CHANNEL android:valueChannel ID /如需更改则手动设置然后再次打包。如此一来重复的工作量大大增加。于是就有了AndroidStudio上的多渠道打包。
2、Gradle多渠道打包
对于这种情况Android Gradle提供了非常便捷的方法让我们来替换AndroidManifest文件中的内容他就是 manifestPlaceholder、Manifest 占位符。
ManifestPlaceholders 是 ProductFlavor 的一个属性是一个Map类型所以我们可以同时配置很多个占位符。下面我们就通过这个配置渠道号的例子来演示manifestPlaceholders的用法。
在 build.gradle 中的 android 标签内增加如下代码
android {...productFlavors{google{manifestPlaceholders [SDKChannel: google,app_name : string/app_name,]}baidu{manifestPlaceholders [SDKChannel: baidu,app_name : string/app_name,]}}
}在 AndroidManifest.xml 文件中代码如下
?xml version1.0 encodingutf-8?
manifest xmlns:androidhttp://schemas.android.com/apk/res/androidpackagecom.sdkapplication ...android:label${app_name}meta-dataandroid:nameSDKChannelandroid:value${SDKChannel} /.../application
/manifest接下来我们就来看看打包效果了。 如果一个App的渠道号很多的话我们总不能一个个配置吧太多也太累维护也麻烦我们还可以通过迭代productFlavors批量的方式进行修改。
android {...productFlavors{google{}baidu{}}productFlavors.all { flavor -flavor.manifestPlaceholders [SDKChannel: name, app_name : string/app_name]}
}我们通过all函数遍历每一个ProductFlavor然后把它们的name作为渠道名非常方便。这里不止可以做这一个事情在遍历ProductFlavor的时候你可以做很多你想做的事情这就是Gradle的灵活之处把脚本当程序写。
Android Gradle提供的manifestPlaceholders占位符的应用方式让我们可以替换AndroidManifest文件中任何${Var}格式的占位符。所以他的使用场景不限于渠道名这一个比如还有ContentProvider的auth的授权或者其他动态配置meta信息等。灵活运用它能帮助我们做很多事情让我们的构建更灵活更方便。