最新版本Bugly Tinker集成爬坑出坑磨歷

前言

由于2019年時有一個項目接入過?Bugly的熱更新框架精肃,時隔兩年之久司抱,新項目亦即需要接入熱更新方案黎烈,我以為有以前的成功接入經(jīng)驗,這次接入會是一個小Case武翎,沒想到還是太小看Bugly官方給布下的坑了,不得不說Bugly官方還是沒說明白需要注意的事項溶锭。

Bugly官方的?熱更新接入引導(dǎo)

Bugly官方的引導(dǎo)如下:

Bugly官方引導(dǎo)第一步:添加插件依賴

工程根目錄下“build.gradle”文件中添加:

buildscript{

repositories{

jcenter()

?? }

dependencies{

// tinkersupport插件, 其中l(wèi)astest.release指拉取最新版本暖途,也可以指定明確版本號,例如1.0.4

? ? ? ?classpath "com.tencent.bugly:tinker-support:1.1.5" //看一個坑就在這里了露久,該版本已經(jīng)是較老的版本了

?? }

}

Bugly發(fā)布的TinkerSupport倉庫地址

從Jcenter的倉庫上可知毫痕,TinkerSupport的版本截圖如下:

TinkerSupport插件版本

Bugly官方引導(dǎo)第二步:添加插件依賴消请,在項目的app?模塊的 build.gradle文件內(nèi)添加:

android {

? ? ? ? defaultConfig {

? ? ? ? ? ndk {

? ? ? ? ? ? //設(shè)置支持的SO庫架構(gòu)

? ? ? ? ? ? abiFilters 'armeabi-v7a' //, 'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a'

? ? ? ? ? }

? ? ? ? }

? ? ? }

? ? ? dependencies {

? ? ? ? ? compile "com.android.support:multidex:1.0.1" // 多dex配置

? ? ? ? ? //注釋掉原有bugly的倉庫

? ? ? ? ? //compile 'com.tencent.bugly:crashreport:latest.release'//其中l(wèi)atest.release指代最新版本號臊泰,也可以指定明確的版本號缸逃,例如1.3.4

? ? ? ? ? compile 'com.tencent.bugly:crashreport_upgrade:1.3.6'

? ? ? ? ? // 指定tinker依賴版本(注:應(yīng)用升級1.3.5版本起需频,不再內(nèi)置tinker)

? ? ? ? ? compile 'com.tencent.tinker:tinker-android-lib:1.9.9' //你會發(fā)現(xiàn)這個版本又是老的

? ? ? ? ? compile 'com.tencent.bugly:nativecrashreport:latest.release' //其中l(wèi)atest.release指代最新版本號昭殉,也可以指定明確的版本號挪丢,例如2.2.0

? ? ? }

上面的依賴居然還是 "compile"關(guān)鍵字吃靠,都廢棄好多年了巢块。

現(xiàn)在?Tinker官方的版本記錄如圖:

Tinker-android-lib倉庫

tinker-android-lib倉庫

綜上族奢,Bugly官方的接入引導(dǎo)所需要的依賴庫就接入完成了越走,但是問題產(chǎn)生的其實就是坑一:

classpath "com.tencent.bugly:tinker-support:1.1.5"http://這個版本引起的

? ? ?原因如下:

問題的起因:AndroidStudio?版本引起

由于目前大多數(shù)開發(fā)者廊敌,都已經(jīng)將AndroidStudio升級到 4.x版本骡澈,當(dāng)我們新建項目時肋殴,它給項目的根目前下的build.gradle 自動配置的:

classpath "com.android.tools.build:gradle:4.x.x"

并且當(dāng)我們按Bugly官方的引導(dǎo)接入后护锤,此時?一同步整個工程烙懦,直接報錯:

A problem occurred configuring project ':app'.

> Failed to notify project evaluation listener.

? > No such property: variantConfiguration for class: com.android.build.gradle.internal.variant.ApplicationVariantData

? > can't find tinkerProcessDebugManifest, you must init tinker plugin first!????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????


于是乎百度赤炒、谷歌魄鸦,BuglyTinkerDemo大都是說?因為 Tinker還不支持?高版本的 AGP(即classpath? ? ? ? ? "com.android.tools.build:gradle:4.x.x")拾因,

哀嚎聲一片:

有好多開發(fā)者都遇到同樣問題


難受

再找找Tinker绢记,同樣有開發(fā)者遇到同樣的問題:

我也差點要放棄該庫

Tinker官方 issues

Bugly?官方的開發(fā)者也不會回應(yīng);

我也很苦惱正卧,百搜不得其解,加 BuglyQQ群加不進(jìn)去蠢熄,急了直接向 Bugly公眾號發(fā)私信也沒用:

實在沒辦法連公眾號都不放過

我也按照其他作者的簡書如下進(jìn)行修改配置:

Tinker目前還不支持Gradle 5.x,需要降低Gradle版本

1.修改gradle文件夾下的gradle-wrapper.properties版本

distributionUrl=https://services.gradle.org/distributions/gradle-5.6.4-all.zip

2.修改項目根目錄下的build.gradle中g(shù)radle依賴版本為

????????????classpath "com.android.tools.build:gradle:3.5.3"

作者:我吃大西瓜QAQ

鏈接:http://www.reibang.com/p/eaae6afaaae3

來源:簡書

著作權(quán)歸作者所有炉旷。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)签孔,非商業(yè)轉(zhuǎn)載請注明出處叉讥。


那么就算把?classpath "com.android.tools.build:gradle:3.5.3",也還是同步時報錯:

No such property: variantConfiguration for class: com.android.build.gradle.internal.variant.ApplicationVariantData

再說?"com.android.tools.build:gradle:3.5.3"?這版本實在是有點舊饥追,現(xiàn)在最新的都

"com.android.tools.build:gradle:4.1.3"?了图仓,

真相

其實問題確實是出在 classpath “com.android.tools.build:gradle”的插件版本和 classpath"com.tencent.bugly:tinker-support"?兩個版本不兼容的問題,但是不知道為何Bugly官方不會去提醒注意這個但绕,看騰訊的一些出品的開源項目,里面有些 gradle的腳本和依賴劫窒,感覺真是有點老舊,不知道他們是怎么能運行成功的煤禽。

最終解決方案

1唐断、不需要?把我們較新的?classpath'com.android.tools.build:gradle:4.x'?降至 3.x

? ? 項目的根目錄的 build.gradle配置如下:

dependencies{

? ? ? ? classpath"org.jetbrains.kotlin:kotlin-gradle-plugin:${KOTLIN_VERSION}"

? ? ? ? classpath'com.android.tools.build:gradle:4.1.3'

? ? ? ? classpath"com.tencent.bugly:tinker-support:1.1.9.3" // bugly對 tinker的支持

? ? }

2、不需要把我們的 gradle wrapper的版本從較新的 :gradle-6.5-all降到 5.x

可以使用最新的gradle版本

3铆遭、在?Bugly發(fā)布的TinkerSupport倉庫地址?我使用笨方法,從最高的版本降序該個來試(實在是逼得沒辦法了)衙伶,結(jié)果在?試驗到:

classpath "com.tencent.bugly:tinker-support:1.1.9.3"

在?項目的 app模塊下都使用最新的版本,如:

dependencies{

? ? implementation"org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"

? ? implementation'androidx.core:core-ktx:1.3.2'

? ? implementation'androidx.appcompat:appcompat:1.2.0'

? ? implementation'com.google.android.material:material:1.2.1'

? ? implementation'androidx.constraintlayout:constraintlayout:2.0.4'

? ? testImplementation'junit:junit:4.13.2'

? ? androidTestImplementation'androidx.test.ext:junit:1.1.2'

? ? androidTestImplementation'androidx.test.espresso:espresso-core:3.3.0'

? ? implementation'com.tencent.bugly:crashreport_upgrade:1.5.1'

? ? // 指定tinker依賴版本(注:應(yīng)用升級1.3.5版本起儒陨,不再內(nèi)置tinker)

? ? implementation'com.tencent.tinker:tinker-android-lib:1.9.14.14' //大膽使用最新的版本

? ? implementation'com.tencent.bugly:nativecrashreport:3.9.1' //其中l(wèi)atest.release指代最新版本號笛园,也可以指定明確的版本

}

結(jié)果一同步埋同,居然沒有馬上失敗,同步發(fā)了好久的時間,我就知道,呵呵集嵌,看來是沒問題了。

最后咽块,跑一個 debug項目包,Tinker生成的 bakapp也出來了

終于OK了

總結(jié)/感慨

1应役、class "com.android.tools.build:gradle:"?的插件源碼對開發(fā)者來說像是一個黑盒,大量的API可能知其然,而不知其所以然捐凭;

2官套、其實?項目如果直接集成 Tinker(最新版本的話)是能成功了,也不需要各種降版本,但是輸出的 patch包卻需要自己管理、下載因悲、維護(hù)人灼,不方便投放,還是Bugly的 patch包分發(fā)方便耗绿;

3、gradle?的API不熟練啊,還是得多加油學(xué)學(xué);

番外

如果能幫到你向胡,有空來 我的GitHub?轉(zhuǎn)轉(zhuǎn)吧拇派,寫的一些東西可能對你有點幫助

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件阁簸,死亡現(xiàn)場離奇詭異饶米,居然都是意外死亡褪猛,警方通過查閱死者的電腦和手機(jī)笑旺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來泽艘,“玉大人然低,你說我怎么就攤上這事来农。” “怎么了特幔?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么卸耘? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任锭魔,我火速辦了婚禮笙蒙,結(jié)果婚禮上艇搀,老公的妹妹穿的比我還像新娘右莱。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布谎僻。 她就那樣靜靜地躺著挎挖,像睡著了一般堪伍。 火紅的嫁衣襯著肌膚如雪彻亲。 梳的紋絲不亂的頭發(fā)上轴脐,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼强重。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的陕见。 我是一名探鬼主播谋竖,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼淋样!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤足丢,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體参咙,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡刁岸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年恨狈,在試婚紗的時候發(fā)現(xiàn)自己被綠了禾怠。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片膀哲。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡等太,死狀恐怖瞻想,靈堂內(nèi)的尸體忽然破棺而出佃迄,到底是詐尸還是另有隱情麻车,我是刑警寧澤,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布猿涨,位于F島的核電站,受9級特大地震影響姆怪,放射性物質(zhì)發(fā)生泄漏叛赚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一稽揭、第九天 我趴在偏房一處隱蔽的房頂上張望俺附。 院中可真熱鬧,春花似錦溪掀、人聲如沸事镣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽璃哟。三九已至,卻和暖如春喊递,著一層夾襖步出監(jiān)牢的瞬間随闪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工骚勘, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留铐伴,地道東北人。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓俏讹,卻偏偏與公主長得像当宴,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子泽疆,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內(nèi)容