文章出處
文章列表
一、友盟多渠道打包:
在AndroidManifest.xaml文件中application節點下:
<!--友盟多渠道打包--> <meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}" />
然后在app下的build.gradle文件下的android節點下:
// 方式一:
productFlavors{
wandoujia{
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
}
xiaomi{
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"]
}
}
然后重新編譯一下app,選擇Build->Generate Signed Apk,然后會出現多渠道:
下面有兩種優化方式:
優化1:
//優化1:
productFlavors{
wandoujia{}
xiaomi{}
}
productFlavors.all { flavor ->
flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]}
優化2:
//優化2:
productFlavors{
wandoujia{}
xiaomi{}
}
productFlavors.all {flavor ->
flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if(outputFile != null && outputFile.name.endsWith(".apk")){
def fileName = outputFile.name.replace(".apk","-${defaultConfig.versionName}.apk")
output.outputFile = new File(outputFile.parent, fileName);
}
}
}
在代碼中獲取渠道信息:
private String getChannel(){ try { PackageManager pm = getPackageManager(); ApplicationInfo appInfo = pm.getApplicationInfo(getPackageName(),PackageManager.GET_META_DATA); return appInfo.metaData.getString("UMENG_CHANNEL"); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } return ""; }
文章列表
全站熱搜