本文,將會(huì)講解安卓以配置gradle的方式實(shí)現(xiàn)多渠道打包。
開發(fā)環(huán)境:androidstudio版本為3.0以上
馬上發(fā)車:
(一)生成一個(gè)簽名文件
通過(guò)AndroidStudio中的build-->generate signed bundle or apk生成一個(gè)軟件簽名文件。
至此,app的簽名文件已經(jīng)生成,可以在生成的目錄里面查看。本項(xiàng)目,簽名文件存放在項(xiàng)目的根目錄。
目錄截圖如下:
項(xiàng)目的build.gradle配置打包時(shí)簽名代碼如下:
至此,項(xiàng)目打包時(shí),簽名配置完成。
(二)配置生成的渠道(渠道名字)
首先,配置的是主app項(xiàng)目的AndroidManifest文件,增加一個(gè)meta標(biāo)簽,代碼如下:
再而,在build.gradle文件中定義相關(guān)渠道信息,截圖如下:
至此,可以試著rebuild一下project,發(fā)現(xiàn)報(bào)錯(cuò)了,提示信息如下:
出現(xiàn)該錯(cuò)誤原因,是因?yàn)椋?br>
Android項(xiàng)目打包時(shí)使用了productFlavors分包,需要所有的flavors都必須屬于同一個(gè)favorDimensions屬性。
代碼修改如下:
至此,關(guān)于多渠道打包配置已經(jīng)完成,下面可以進(jìn)行打包操作了,打包出來(lái)的目錄結(jié)構(gòu)如下:
(三)獲取當(dāng)前渠道的代碼:
public static String getChannel(Context context) {
try {
PackageManager pm = context.getPackageManager();
ApplicationInfo appInfo = pm.getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA);
//key為<meta-data>標(biāo)簽中的name
String channel = appInfo.metaData.getString("UMENG_CHANNEL");
if (!TextUtils.isEmpty(channel)) {
return channel;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
最后,附上demo連接:碼云
that's all--------------------------------------------------------------------
備注:經(jīng)過(guò)測(cè)試,該方式打出的渠道包,通過(guò)三方加固后,依然穩(wěn)定存在,所以建議使用該方式打包,缺點(diǎn)是耗時(shí)。