一、友盟多渠道打包:
在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 ""; }