1. 程式人生 > >gradle神器~Android多渠道配置管理(1)

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.新增渠道


  新增完成後sync編譯一下,在AS工具的BuildVariants可以檢視當前所有的渠道:

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就會打包所有的渠道包,就可以實現後臺統計在指定渠道上的下載統計了。