gradle神器~Android多渠道配置管理(1)

   前言

           从事Android开发六年了,对个人的工作中遇到的Android多渠道实际情况做个总结,希望能与各位同行共同交流。

   背景:

          个人经历的公司有B2C、O2O和B2B等等吧,不管哪种形式的平台模式,都需要把Android APP的发布到不同的应用商店,国内市场的应用商店之多不用我说,各位同行也知晓。更坑的是各大应用商店平台的要求还不一样,在此情况下怎么更好的管理Android工程代码就非常有必要,Eclipse的年代我就不多提了,下面依次递深的记录我使用gradle打包的过程

环境配置:

         以后所有的文章如果不做特殊的说明,都是在此环境基础之上进行运行的

         jdk: 1.80

        gradle: gradle-3.3-all.zip

         Android Studio3.0

        工程根目录下build.gradle的设置:

      

dependencies {
    classpath 'com.android.tools.build:gradle:2.3.3'

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}

Android多渠道常规打包:

        最初形态的gradle多渠道打包现在已经烂大街了,就是为了简单的统计和区分各个应用商店平台,过多的解释也就不废话了,只需要在android代码块中添加对应的渠道名字就可以,比如要发布的应用商店 xiaomi、360、google……

1.添加渠道

gradle神器~Android多渠道配置管理(1)

  添加完成后sync编译一下,在AS工具的BuildVariants可以查看当前所有的渠道:

gradle神器~Android多渠道配置管理(1)


2.必须在AndroidManifest.xml中添加meta-data

android:value="${XXXX}" XXXX替换成gradle中的值,我的是CHANNEL_NAME如下所示:

<meta-data
    android:name="CHANNEL_TEST"
    android:value="${CHANNEL_NAME}" />

3. 获取AndroidManifest.xml的渠道名称:

/**
 * 获得channel id
 * @param context
 * @return
 */
public static String getMetaData(Context context, String key) {
    String CHANNELID = "";
    try {
        ApplicationInfo ai = context.getPackageManager().getApplicationInfo(context.getPackageName(),
                PackageManager.GET_META_DATA);
        CHANNELID = ai.metaData.getString(key);
    } catch (Exception e) {
    }
    return CHANNELID;
}

 

  完成以上三步执行gradle assembleRelease就会打包所有的渠道包,就可以实现后台统计在指定渠道上的下载统计了。

  版权声明:本文为博主原创文章,转载请标明出处。