Android 多渠道打包

846 阅读1分钟
在清单文件加+
<meta-data
        android:name="UMENG_CHANNEL"
        android:value="${UMENG_CHANNEL_VALUE}" />
        

图片.png

app的build.gradle配置+
/*配置渠道*/
productFlavors {
    yingyongbao {
        manifestPlaceholders = [UMENG_CHANNEL_VALUE: "yingyongbao"]
    }
    wandoujia {
        manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
    }
    xiaomi {
        manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"]
    }
}

applicationVariants.all { variant ->
    variant.outputs.all {
        outputFileName = "driver_${variant.productFlavors[0].name}_v${variant.versionName}.apk"
    }
}

图片.png

还有这一行代码加在+
flavorDimensions "versionCode"

图片.png

先编译,先编译,先编译,这样基本配置就完成了,然后是导入签名文件 这里重新创建一个,方法如下

图片.png

图片.png

图片.png

如果你之前编译了会出现这些,然后选择下边这个(如图)Finish即可 图片.png

//等待编译.... 编译完成后

/**
 * 获取app包内的渠道标识
 */
public static String getChannel(Context context) {
    try {
        PackageManager manager = context.getPackageManager();
        ApplicationInfo appInfo = manager.getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA);
        return appInfo.metaData.getString("UMENG_CHANNEL");
    } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
        return "";
    }
}

在主方法中打印log

Log.i("TAG", "驱动号"+getChannel(this));

ok