gradle神器~Android多渠道配置管理(1)
阿新 • • 發佈:2019-02-17
前言
從事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就會打包所有的渠道包,就可以實現後臺統計在指定渠道上的下載統計了。