Android Gradle 多渠道打包、动态配置AppName
目錄
- 一、簡(jiǎn)介
- 二、Gradle多渠道打包
- 1、普通做法
- 2、Gradle多渠道打包
一、簡(jiǎn)介
因?yàn)閲?guó)內(nèi)Android應(yīng)用分發(fā)市場(chǎng)的現(xiàn)狀,我們?cè)诎l(fā)布APP時(shí),一般需要生成多個(gè)渠道包,上傳到不同的應(yīng)用市場(chǎng)。這些渠道包需要包含不同的渠道信息,在APP和后臺(tái)交互或者數(shù)據(jù)上報(bào)時(shí),會(huì)帶上各自的渠道信息。這樣,我們就能統(tǒng)計(jì)到每個(gè)分發(fā)市場(chǎng)的下載數(shù)、用戶(hù)數(shù)等關(guān)鍵數(shù)據(jù)。
二、Gradle多渠道打包
1、普通做法
通常情況下的做法是在 AndroidManifest 中增加渠道號(hào):
<meta-data android:name="SDK_CHANNEL" android:value="Channel ID" />如需更改則手動(dòng)設(shè)置,然后再次打包。如此一來(lái),重復(fù)的工作量大大增加。于是就有了AndroidStudio上的多渠道打包。
2、Gradle多渠道打包
對(duì)于這種情況,Android Gradle提供了非常便捷的方法讓我們來(lái)替換AndroidManifest文件中的內(nèi)容,他就是 manifestPlaceholder、Manifest 占位符。
ManifestPlaceholders 是 ProductFlavor 的一個(gè)屬性,是一個(gè)Map類(lèi)型,所以我們可以同時(shí)配置很多個(gè)占位符。下面我們就通過(guò)這個(gè)配置渠道號(hào)的例子來(lái)演示manifestPlaceholders的用法。
在 build.gradle 中的 android 標(biāo)簽內(nèi)增加如下代碼:
android {...productFlavors{google{manifestPlaceholders = [SDKChannel: "google",app_name : "@string/app_name",]}baidu{manifestPlaceholders = [SDKChannel: "baidu",app_name : "@string/app_name",]}} }在 AndroidManifest.xml 文件中代碼如下:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.sdk"><application ...android:label="${app_name}"><meta-dataandroid:name="SDKChannel"android:value="${SDKChannel}" />...</application> </manifest>接下來(lái)我們就來(lái)看看打包效果了。
如果,一個(gè)App的渠道號(hào)很多的話(huà),我們總不能一個(gè)個(gè)配置吧,太多也太累,維護(hù)也麻煩,我們還可以通過(guò)迭代productFlavors批量的方式進(jìn)行修改。
我們通過(guò)all函數(shù)遍歷每一個(gè)ProductFlavor,然后把它們的name作為渠道名,非常方便。這里不止可以做這一個(gè)事情,在遍歷ProductFlavor的時(shí)候,你可以做很多你想做的事情,這就是Gradle的靈活之處,把腳本當(dāng)程序?qū)憽?/p>
Android Gradle提供的manifestPlaceholders占位符的應(yīng)用方式,讓我們可以替換AndroidManifest文件中任何${Var}格式的占位符。所以他的使用場(chǎng)景不限于渠道名這一個(gè),比如還有ContentProvider的auth的授權(quán),或者其他動(dòng)態(tài)配置meta信息等。靈活運(yùn)用它能幫助我們做很多事情,讓我們的構(gòu)建更靈活,更方便。
總結(jié)
以上是生活随笔為你收集整理的Android Gradle 多渠道打包、动态配置AppName的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: codeforces 58A-C语言解题
- 下一篇: Android 为控件设置阴影