Android Studio多渠道打包

0 背景

现在渠道号好像都是App必备的了,不管产品有没有对渠道进行统计,反正代码里面你要加上。类似的现象还有很多,反正就是加大了开发人员的工作量,耗费了手机的性能、流量、电量,到时候就是一个图表,还不看,更不要说根据那个图表做什么改进。不吐槽产品了,还是先看看技术上怎么实现吧。

1 设置渠道号

早期我使用的是友盟,那时候开发工具还是eclipse,是在Manifest文件中定义一个标签,如下所示:

<meta-data android:value="Channel ID" android:name="UMENG_CHANNEL"/>

最近项目中用的是growingIO,它的渠道号是通过java代码设置的:

public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        GrowingIO.startWithConfiguration(this, new Configuration()
                .useID()
                .trackAllFragments()
                .setChannel("XXX应用商店")
                .setDebugMode(true) //打开调试Log;
    }
}

无论是在java中还是在xml中设置渠道号关系都不大,只要在应用启动时候获取到在传给服务器就OK了。

2 多渠道的设置

每个平台的渠道号都是写死在代码中的,如果我们需要上传至多个平台,那么就需要每次更改下渠道号然后再打包,这对于我们来说无疑是非常痛苦的,当然聪明的程序员们也想了各种方法来应对。不过使用AndroidStudio就没必要那么麻烦了,AndroidStudio中的gradle脚本支持多渠道打包

  1. 在application节点下添加一个渠道标签
 <meta-data
            android:name="CHANNEL"
            android:value="${CHANNEL_VALUE}" />
  1. 在gradle中添加渠道号,并替换${CHANNEL_VALUE}
 productFlavors {
        HUAWEI {}
        OPPO {}
        VIVO {}
        XIAOMI {}
        SAMSUNG {}
        MEIZU {}
        LETV {}
        Tencent {}
        QH360 {}
        Baidu {}
        wandoujia {}
        Sogou {}
    }

    productFlavors.all {
        flavor -> flavor.manifestPlaceholders = [CHANNEL_VALUE: name]
    }

这样在我们生成带签名的apk时就可以选择渠道了
这里写图片描述

发布了37 篇原创文章 · 获赞 3 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/github_34790294/article/details/72794230