JCenter 遷移指南

本文章已授權(quán)郭霖微信公眾號轉(zhuǎn)載

  • JCenter 遠(yuǎn)程倉庫已經(jīng)宣布停止維護(hù)了嗡髓,經(jīng)過一段時(shí)間的實(shí)踐和踩坑脏里,現(xiàn)在由我來給大家講講 JCenter 停更帶來的影響及分享解決的方案反粥。
  • 進(jìn)入 Bintray 官網(wǎng),就會發(fā)現(xiàn)有一個(gè)很明顯的紅色橫幅军洼,大致的意思是:注意所有 Bintray 服務(wù)將被棄用甘桑,您的帳戶將在 2021 年 5 月 1 日被禁用,學(xué)習(xí)更多的知識。

  • 點(diǎn)擊學(xué)習(xí)更多庸汗,我們可以發(fā)現(xiàn)了 Bintray 官方對本次操作做出的解釋改化,由于全是英文,為了方便大家枉昏,我直接翻譯成中文給大家看:

  • 官方主要講了三點(diǎn)內(nèi)容陈肛,分別是:

    1. 解釋為什么停止維護(hù)

    2. 停止維護(hù)的時(shí)間節(jié)點(diǎn)

    3. 常見一些問題的解答

  • 為了節(jié)省大家時(shí)間,我對內(nèi)容做了提煉精簡兄裂,為大家簡單解說一下:

    1. Bintray 和 JCenter 因?yàn)閽瓴坏藉X句旱,所以業(yè)務(wù)被砍掉了,需要開發(fā)者提前做一下遷移晰奖。

    2. 截止 2021 年 3 月 30 日之后不能上傳任何庫谈撒,2022 年 2 月 1 日之后不能下載任何庫。

    3. 停止維護(hù)之后匾南,Bintray 賬戶將被限制登錄啃匿,Bintray 官網(wǎng)將不能被訪問,所有數(shù)據(jù)在最后一天從服務(wù)器中被刪除蛆楞。

影響范圍

  • 先來談?wù)勥@次事件帶來的影響:影響范圍很廣溯乒,主要表現(xiàn)為 2022 年 2 月 1 日之后 Android Studio 將無法從 JCenter 倉庫拉取任何代碼庫,統(tǒng)統(tǒng)都會拉取失敗豹爹,間接導(dǎo)致項(xiàng)目無法編譯通過裆悄。
  • 這是創(chuàng)建新項(xiàng)目的遠(yuǎn)程倉庫配置,默認(rèn)只配置了 Google 和 JCenter臂聋,這時(shí)大家心里可能在想:JCenter 倉庫掛掉了沒事光稼,反正還有 Google 倉庫呢。

  • 但事實(shí)卻是:Google 倉庫是谷歌官方的遠(yuǎn)程倉庫孩等,只存放谷歌官方的一些框架艾君,例如 AndroidX 相關(guān)的包都是放在這里的,暫時(shí)不對外開放瞎访,也就是說現(xiàn)在大家用的第三方框架基本都是放在 JCenter 倉庫上腻贰,就問你一句方不方吁恍?慌不慌扒秸?

解決方案

  • 面對問題播演,我覺得只會慌是解決不了問題的,還是得多想想辦法伴奥,而不是坐以待斃写烤,我最近花了很多時(shí)間研究了這個(gè)問題,最后發(fā)現(xiàn)解決這個(gè)問題其實(shí)并不難拾徙,JCenter 倉庫用不了洲炊,可以換成 JCenter 的鏡像倉庫。

  • 在這里我推薦使用 阿里云云效倉庫華為開源鏡像站 來解決這一問題尼啡,在項(xiàng)目根目錄下的 build.gradle 文件中這樣配置:

buildscript {
    repositories {
        // 阿里云云效倉庫:https://maven.aliyun.com/mvn/guide
        maven { url 'https://maven.aliyun.com/repository/public' }
        maven { url 'https://maven.aliyun.com/repository/google' }
        // 華為開源鏡像:https://mirrors.huaweicloud.com
        maven { url 'https://repo.huaweicloud.com/repository/maven' }
        // JitPack 遠(yuǎn)程倉庫:https://jitpack.io
        maven { url 'https://jitpack.io' }
        // MavenCentral 遠(yuǎn)程倉庫:https://mvnrepository.com
        mavenCentral()
        google()
        jcenter()
    }
}

allprojects {
    repositories {
        maven { url 'https://maven.aliyun.com/repository/public' }
        maven { url 'https://maven.aliyun.com/repository/google' }
        maven { url 'https://repo.huaweicloud.com/repository/maven' }
        maven { url 'https://jitpack.io' }
        mavenCentral()
        google()
        jcenter()
    }
}
  • 這時(shí)大家心中可能有另外一個(gè)疑問暂衡,為什么 JCenter 倉庫掛了,而它的鏡像倉庫卻還能用呢崖瞭?這個(gè)問題要從這個(gè)東西誕生的原因說起狂巢,由于 JCenter 是外國人開發(fā)的,用的是自然是國外的服務(wù)器书聚,所以訪問起來很慢唧领,從這些地方拉代碼自然也快不了,嚴(yán)重影響開發(fā)效率雌续,所以國內(nèi)就誕生了關(guān)于 JCenter 的鏡像倉庫斩个,用于解決這一問題,具體的實(shí)現(xiàn)原理是將 JCenter 倉庫上的代碼庫拷貝一份放到國內(nèi)的服務(wù)器的硬盤上面驯杜,這樣我們再拉取代碼庫就會快很多受啥,而對于 JCenter 停止維護(hù)的事件,其實(shí)就是停止外界對服務(wù)器的訪問艇肴,而如果我們重新指向服務(wù)器地址腔呜,這樣是不是就完美避開了訪問 JCenter 服務(wù)器?從我的認(rèn)知看來是沒有問題的再悼,大家對此也可以提出不同的意見核畴。

遷移方案

  • 上面主要是針對使用者的解決方案,假設(shè)我是開源庫作者冲九,那么該如何應(yīng)對這個(gè)問題呢谤草?

  • 如果是開源庫的作者,只能通過換遠(yuǎn)程倉庫服務(wù)商來解決問題莺奸,不換的話現(xiàn)在代碼庫已經(jīng)上傳不了 JCenter丑孩,從而導(dǎo)致框架無法發(fā)布新的遠(yuǎn)程依賴。

  • 現(xiàn)在除了 JCenter 方案灭贷,其實(shí)還有兩個(gè)備選方案温学,mavenCentral 和 JitPack,這兩個(gè)遠(yuǎn)程倉庫也是比較常用甚疟,經(jīng)過對比仗岖,我最終選擇了 JitPack 作為新的代碼庫存放倉庫逃延,主要的原因也很簡單,相比 mavenCentral轧拄,JitPack 的流程更簡單揽祥,主要表現(xiàn)為不需要注冊賬號,不需要在項(xiàng)目 Gradle 中配置信息檩电,只需要將代碼庫發(fā)布到 Github 即可拄丰,最后在 JitPack 構(gòu)建一下就可以了。

  • 現(xiàn)在由我來給大家演示一下具體的操作方式

  • 第一步:提交代碼到 Github 上面(常規(guī)操作)

  • 第二步:找到 Github 頁面中的 Release 選項(xiàng)

  • 第三步:創(chuàng)建一個(gè)新的 release 版本
  • 第四步:填寫好相關(guān)的信息
  • 第五步:填寫完之后點(diǎn)擊 Publish release 按鈕
  • 第七步:輸入 Github 地址俐末,并點(diǎn)擊 Look up 按鈕
  • 第八步:選擇剛剛創(chuàng)建的 10.5 的版本料按,點(diǎn)擊右邊的 Get it 按鈕
  • 第九步:等待構(gòu)建完成,等轉(zhuǎn)圈的圖標(biāo)變成文件的圖標(biāo)就說明已經(jīng)完成
  • 第十步:點(diǎn)擊 Get it 按鈕卓箫,這時(shí)會顯示代碼庫遠(yuǎn)程依賴信息
  • 至此上傳代碼庫到 JitPack 倉庫的流程已經(jīng)講完站绪,有一點(diǎn)需要的注意是掷匠,我們需要在 Github 項(xiàng)目主頁中提醒開發(fā)者加入:
  • 否則會出現(xiàn)有些開發(fā)者拉取不到代碼庫的問題鸣皂,這是因?yàn)?Studio 創(chuàng)建的工程默認(rèn)只配置了 Google 倉庫和 JCenter 倉庫,默認(rèn)并沒有配置 JitPack 倉庫秉扑。

  • 另外告訴大家一個(gè)好消息甫题,我個(gè)人的所有框架已如數(shù)遷移到 JitPack 倉庫了馁筐,有使用到我寫的框架的同學(xué)可以考慮找一個(gè)時(shí)間點(diǎn),然后做一下統(tǒng)一升級和遷移坠非,點(diǎn)擊此處可以直達(dá) Github 地址敏沉。

友盟遷移

  • 隨著 Bintray 的逐漸關(guān)閉,有友盟遠(yuǎn)程依賴的項(xiàng)目也運(yùn)行不起來了炎码,編譯時(shí)提示報(bào)錯(cuò):
Unable to resolve dependency for ':umeng@previewUnitTest/compileClasspath': Could not download common-2.2.5.jar (com.umeng.umsdk:common:2.2.5)
Unable to resolve dependency for ':umeng@preview/compileClasspath': Could not download analytics-8.1.6.jar (com.umeng.umsdk:analytics:8.1.6)
  • 然后我去官網(wǎng)看了一下盟迟,果然不出所料,這個(gè)不止是我一個(gè)人的問題潦闲,而是大家都會攒菠。
  • 結(jié)果發(fā)現(xiàn)還是不行,不過我發(fā)現(xiàn)最下面有一段話:獲取時(shí)必須為最新版的SDK和敬,頓時(shí)我明白了什么凹炸,原來友盟只放了最新版本在 Maven 庫上面,why昼弟?那我們這些用舊版本的用戶怎么辦啤它?公告上面也沒有寫,友盟這工作做得不到位啊,請?jiān)试S我打個(gè)差評变骡。

  • 不過在我看來解決這個(gè)問題的方法有兩種救欧,大家可以根據(jù)自己的實(shí)際情況而定。

  • 方法一:升級新版本锣光,可以根據(jù)友盟發(fā)布的公告進(jìn)行修改,只不過這種只能升級到最新版本铝耻,當(dāng)然你要是對友盟的 Maven 庫沒有信心誊爹,可以考慮直接下載最新的 Jar 包進(jìn)行離線依賴。

  • 方法二:沿用舊版本瓢捉,這塊的話友盟沒有給出解決方案频丘,但是貿(mào)然升級版本必定存在一定的風(fēng)險(xiǎn),假設(shè)測試同學(xué)沒有空做測試泡态,那么很容易就會出現(xiàn)問題搂漠,這個(gè)時(shí)候?yàn)榱隧?xiàng)目能正常運(yùn)行,又能以最低的成本來做這件事某弦,依賴原有的舊版本就很有必要了桐汤,那么舊版本的 Jar 包該從哪里找呢?我相信很多人第一反應(yīng)是去 Bintray 官網(wǎng)的友盟倉庫中找找看靶壮。

  • 正當(dāng)我高興的時(shí)候怔毛,現(xiàn)實(shí)狠狠給我潑了一波冷水,我點(diǎn)擊下載 common-2.2.5.jar腾降,卻發(fā)現(xiàn)結(jié)果是這個(gè)樣子的
  • 頓時(shí)感覺被命運(yùn)扼住了喉嚨拣度,難道就沒有其他辦法了嗎?

  • 答案其實(shí)有的螃壤,我小腦瓜忽然靈機(jī)一動:去 Github 找找看抗果?

  • 事實(shí)證明,只要思想不滑坡奸晴,辦法總比困難多冤馏,你學(xué)廢了嗎?

  • 至于兩種方案要選擇哪種寄啼,我覺得吧宿接,在開發(fā)和測試同時(shí)都能空出人力來做時(shí),可以優(yōu)先考慮升級友盟 SDK 來解決問題辕录,這樣做還有另外一個(gè)好處睦霎,新版本的 SDK 肯定是修復(fù)了舊版本的某些 Bug,不如趁此機(jī)會提升一下應(yīng)用的穩(wěn)定性走诞,但是如果沒有時(shí)間做副女,也可以先考慮直接找舊版本的 Jar 包來解決問題,畢竟項(xiàng)目要能運(yùn)行才是目前最最最重要的事情蚣旱。

  • 到此 JCenter 遷移指南已經(jīng)全部講完碑幅,感謝大家的觀看戴陡,大家有什么問題歡迎在評論區(qū)指出。

Android 技術(shù)討論 Q 群:10047167

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末沟涨,一起剝皮案震驚了整個(gè)濱河市恤批,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌裹赴,老刑警劉巖喜庞,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異棋返,居然都是意外死亡延都,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進(jìn)店門睛竣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來晰房,“玉大人,你說我怎么就攤上這事射沟∈庹撸” “怎么了?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵验夯,是天一觀的道長幽污。 經(jīng)常有香客問我,道長簿姨,這世上最難降的妖魔是什么距误? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮扁位,結(jié)果婚禮上准潭,老公的妹妹穿的比我還像新娘。我一直安慰自己域仇,他們只是感情好刑然,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著暇务,像睡著了一般泼掠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上垦细,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天择镇,我揣著相機(jī)與錄音,去河邊找鬼括改。 笑死腻豌,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播吝梅,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼虱疏,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了苏携?” 一聲冷哼從身側(cè)響起做瞪,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎右冻,沒想到半個(gè)月后装蓬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡国旷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了茫死。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片跪但。...
    茶點(diǎn)故事閱讀 40,090評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖峦萎,靈堂內(nèi)的尸體忽然破棺而出屡久,到底是詐尸還是另有隱情,我是刑警寧澤爱榔,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布被环,位于F島的核電站,受9級特大地震影響详幽,放射性物質(zhì)發(fā)生泄漏筛欢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一唇聘、第九天 我趴在偏房一處隱蔽的房頂上張望版姑。 院中可真熱鬧,春花似錦迟郎、人聲如沸剥险。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽表制。三九已至,卻和暖如春控乾,著一層夾襖步出監(jiān)牢的瞬間么介,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工蜕衡, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留夭拌,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像鸽扁,于是被迫代替她去往敵國和親蒜绽。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評論 2 355

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