項目多渠道打包傳統(tǒng)的可以采用配置productFlavors來解決,但是有以下缺點:
- 低效 每個渠道包都要走一遍編譯的流程
- 傳統(tǒng)方式針對每個渠道熱修復(fù)的時候都要對應(yīng)打補(bǔ)丁
- bugly只支持5個補(bǔ)丁同時下發(fā),而我們渠道通常不止五個
選擇Walle
- 快,我們項目有10個分發(fā)渠道加上本身的官網(wǎng)和內(nèi)部升級,一共12個。大概不到3分鐘搞定12個包
- 一個補(bǔ)丁包即可,分發(fā)修復(fù)所有渠道包
具體使用可以參照
- https://github.com/Meituan-Dianping/walle
- https://bugly.qq.com/docs/user-guide/instruction-manual-android-hotfix/?v=20170912151050
遇到的問題
gradlew 編譯出現(xiàn)permisson denied
執(zhí)行 chmod +x gradlew 提高權(quán)限-
還有這種:Task 'XXX' not found in root project 'XXX'. 如圖
是因為之前的productFlavors相關(guān)的沒有注釋掉,導(dǎo)致沖突,代碼注釋掉即可
productFlavors {
// m0 {}
// m4 {}
// m5 {}
// m6 {}
// m7 {}
// m8 {}
// m9 {}
// m10 {}
// m11 {}
// m12 {}
// m13 {}
// m14 {}
// }
//
// productFlavors.all { flavor ->
// flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
// }
- 友盟傳統(tǒng)是AndroidManifest.xml里配置渠道信息和名稱的
<!--<meta-data-->
<!--android:name="UMENG_CHANNEL"-->
<!--android:value="${UMENG_CHANNEL_VALUE}" />-->
使用walle可是通過代碼來配置渠道信息,注釋掉清代文件友盟配置
//渠道號
String channel = WalleChannelReader.getChannel(mContext);
Log.e("umeng", "渠道號是: "+channel);
MobclickAgent.startWithConfigure(new MobclickAgent.UMAnalyticsConfig(
mContext, mContext.getString(R.string.umeng_appkey), channel));
好了,這樣就節(jié)約了大把打包編譯傳補(bǔ)丁的時間了
