配置App模块的build.gradle文件。

使用productFlavors,添加2个渠道,例如360和应用宝。
注意如果是3.0版本的Gradle,必须要添加上flavorDimensions纬度。
使用manifestPlaceholders,增加清单文件占位,格式:[占位名:值, 占位名:值]。

apply plugin: 'com.android.application'

android {
    //省略其他配置...

    //3.0版本Gradle开始必须添加纬度
    flavorDimensions "default"
    
    //多渠道打包配置
    productFlavors {
        //渠道包
        app_360 {
            manifestPlaceholders = [channel: "app_360"]
        }
        app_qq {
            manifestPlaceholders = [channel: "app_qq"]
        }
    }
}

除了productFlavors中配置manifestPlaceholders生成渠道包外,在编译环境buildTypes下也可以使用,例如不同编译环境下,高德地图的key不同,就可以在buildTypes中使用。

buildTypes {
    debug {
        manifestPlaceholders = [amap_key: "amp_debug_xxxxxkey"]
        //省略其他配置...
    }

    release {
        manifestPlaceholders = [amap_key: "amp_release_xxxxxkey"]
        //省略其他配置...
    }
}

meta标签

<!-- 占位名:channel,不包括${} -->
<meta-data
    android:name="UMENG_CHANNEL"
    android:value="${channel}" />

在Java代码层读取meta标签,获取值

//渠道工具类
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 "";
        }
}

Gradle中读取渠道值

来源

https://www.jianshu.com/p/90940e9911b4
https://www.jianshu.com/p/1fdd700032ba

最后修改日期:2020年4月22日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。