項(xiàng)目多渠道打包傳統(tǒng)的可以采用配置productFlavors來解決,但是有以下缺點(diǎn):
- 低效 每個(gè)渠道包都要走一遍編譯的流程
- 傳統(tǒng)方式針對每個(gè)渠道熱修復(fù)的時(shí)候都要對應(yīng)打補(bǔ)丁
- bugly只支持5個(gè)補(bǔ)丁同時(shí)下發(fā),而我們渠道通常不止五個(gè)
選擇Walle
- 快边锁,我們項(xiàng)目有10個(gè)分發(fā)渠道加上本身的官網(wǎng)和內(nèi)部升級票腰,一共12個(gè)颖杏。大概不到3分鐘搞定12個(gè)包
- 一個(gè)補(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'. 如圖
是因?yàn)橹暗膒roductFlavors相關(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ǔ)丁的時(shí)間了