多渠道打包的多种方式实现(炒鸡简单)

来源:互联网 发布:linux 解压tar.gz 编辑:程序博客网 时间:2024/04/27 16:18

原理很简单直接上代码::::::


上代码:
//在类中写方法进行获取标识
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 ignored) {}
return "";
}
////////////////////////////////然后在Oncreate中进行提示
String channel = getChannel();
Toast.makeText(this, "渠道标识"+channel, Toast.LENGTH_SHORT).show();

清单文件/////////////////////////////////////
<meta-data
android:name="UMENG_CHANNEL"
android:value="qq" />
方式二:
AndroidManifest.xml中
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}"
/>

//build.gradle中android下
productFlavors{
wandoujia{
manifestPlaceholders = [UMENG_CHANNEL_VALUE:"wandoujia"]
}
xiaomi{
manifestPlaceholders=[UMENG_CHANNEL_VALUE:"xiaomi"]
}
}

方式三:
//清单文件
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}"
/>

build.gradle中android下
//设置APK的渠道信息
    productFlavors {
        wandoujia {}
        xiaomi {}
        qq {}
        yidashi {}
    }
    //分别进行打包
    productFlavors.all { flavor ->
        flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
    }
    //根据渠道自定义apk的名称,自带版本号,渠道名
    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            output.outputFile = new File(
                    output.outputFile.parent,
                    "weixing-${variant.buildType.name}-${defaultConfig.versionName}-${variant.productFlavors[0].name}.apk".toLowerCase())
        }
    }

//注意方法一中的getChannel方法通用.

最后进行打包:Build下的Generate Signed APK进行打包,后面就是输入密码的事情







阅读全文
0 0
原创粉丝点击