關(guān)于Android需要多渠道打包的意義不需要多說,眾多Android應(yīng)用的分發(fā)平臺(tái),我們需要進(jìn)行各種數(shù)據(jù)的統(tǒng)計(jì)。
1,360加固保
? ?這種方式非常簡單,只需要在加固前設(shè)置好多渠道配置便可,上傳apk便可以生成各渠道包。
2,Android studio
(1)在manifest.xml中添加?
<meta-data
? ? android:name="UMENG_CHANNEL"
? ? android:value="${UMENG_CHANNEL_VALUE}" />
(2)在build.gradle 設(shè)置productFlavors
在Android節(jié)點(diǎn)下添加:
productFlavors {
? ? ?//配置多渠道打包平臺(tái)
? ? ? ?xiaomi {? ? }
? ? ? baidu {
? ? ? ? //在默認(rèn)的的id和name后面追加,使用這種方式可以同時(shí)安裝測試和正式環(huán)境的apk,也可以使用?applicationId等屬性覆蓋性設(shè)置。未設(shè)置則使用默認(rèn)設(shè)置
? ? ? ? ? ?applicationIdSuffix ".baidu"
? ? ? ? ? versionNameSuffix "-baidu"
? ? ? }
? ?}
//統(tǒng)一設(shè)置所有平臺(tái)使用名字替換UMENG_CHANNEL_VALUE值,也可以在上面每個(gè)憑條分別設(shè)置
?productFlavors.all {
? ? ? ? flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
?}
這樣打包的時(shí)候選擇所有Flavor就可以同時(shí)打包出所有平臺(tái)的apk
(3)如果在不同平臺(tái)需要配置不同的資源文件,在src目錄下建立不同平臺(tái)的文件夾,名字與平臺(tái)名稱一致,目錄結(jié)構(gòu)同main文件夾即可
(4)測試打包出來的UMENG_CHANNEL_VALUE值
private String getApplicationMetaValue(String name) {
String value ="";
try {
ApplicationInfo applicationInfo = getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
value = applicationInfo.metaData.getString(name);
}catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return value;
}
getApplicationMetaValue("UMENG_CHANNEL");即可