一、多渠道打包的方法
说明:下面以百度助手、小米应用市场、豌豆荚、应用宝等平台打包 一下简称 百度、小米、豌豆荚、应用宝
操作步骤:
第一步: 在app模块 app>manifest>AndroidManifest.xml 中的application下面编写 如下代码
<meta-data
android:name="APP_CHANNEL"
android:value="${APP_CHANNEL_VALUE}"/>
第二步:在app模块下面build.gradle 编写如下代码:
这里需要注意:如果android studio 版本如果大于3.0 则需要在这里添加如下代码:
defaultConfig {
//android studio 3.0 之后使用多渠道配置方向 解决这个问题:belong to a named flavor dimension. Learn more at
flavorDimensions "deault"
}
如果步添加这个默认配置会出现下面错误
//配置多渠道
productFlavors{
xiaomi{
manifestPlaceholders = [APP_CHANNEL_VALUE:"xiaomi"]
}
wandoujia{
manifestPlaceholders = [APP_CHANNEL_VALUE:"wandoujia"]
}
baidu{
manifestPlaceholders = [APP_CHANNEL_VALUE:"baidu"]
}
yingyongbao{
manifestPlaceholders = [APP_CHANNEL_VALUE:"yingyongbao"]
}
//...
}
配置完成之后需要build以下
最后一步:点击gradle下面的 gradle>app>build>assemble进行批量打包 或者单个打包
二、获取渠道号
可以写一个帮助类:FlavorHelper.java
/**
* 获取渠道号
* @param mContext
* @return
*/
public static String getFlavor(Context mContext){
PackageManager pm = mContext.getPackageManager();
try {
ApplicationInfo info = pm.getApplicationInfo(mContext.getPackageName(),PackageManager.GET_META_DATA);
Bundle bundle = info.metaData;
return bundle.getString("APP_CHANNEL");
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return "";
}
//获取渠道
String flavor = FlavorHelper.getFlavor(this);
Toast.makeText(this,"渠道号:"+flavor,Toast.LENGTH_SHORT).show();
说明:多渠道打包的方式以后很多种 美团瓦力多渠道打包 请查看这里:https://github.com/Meituan-Dianping/walle