淺談JCenter即將被停止服務的事件
可能有許多朋友都已經知道了這個事情,JCenter即將在Android上被廢棄了。
這么重大的事件也是相當出乎我意料,本來我以為是Google又要整什么幺蛾子,因為Google很喜歡廢棄東西。結果了解下來,Google這次也是受害者。
今年2月3號,JFrog(JCenter的運營方),在其官網宣布了這一重大決定,包括Bintray、JCenter在內的多項軟件包管理和分發(fā)服務都將停止運營。原文鏈接如下:
https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/
JFrog的這則聲明可謂是殺傷力極強,為什么這么說呢?因為它即將影響到的是所有的Android開發(fā)者,是的你沒聽錯,是所有。
只要你是一名Android開發(fā)者,就一定使用了JFrog提供的服務,即使你沒聽過JFrog這個名字,你也一定在不知不覺中使用了JFrog的服務。
當我們在Android Studio當中新建一個Android項目時,你總是可以在build.gradle文件里找到這樣一段配置:
- repositories {
- google()
- jcenter()
- }
這段配置的意思是,指定當前的項目工程可以從哪些倉庫上去拉取依賴庫給當前項目使用。
其中,google()指的是Google自家的倉庫,比如我們使用的很多第一方庫,如RecyclerView, Jetpack Components等等就是從這里拉取的。
而jcenter()指的就是由JFrog提供的JCenter倉庫,幾乎Android上所有的第三方開源項目都會選擇將庫發(fā)布到這里,比如你在項目中集成的OkHttp、Retrofit、RxJava等等第三方庫都是從這里拉取的。
Android的第三方庫規(guī)模龐大,數(shù)量遠超Google的第一方庫,可以說任何一個Android項目都會依賴許多的第三方開源項目。這也是為什么我說,JFrog的這則聲明殺傷力極強了。
接下來我來跟大家具體介紹一下JCenter的停止服務會帶來哪些影響,以及這些影響生效的時間節(jié)點。
毫無疑問,JCenter的停止服務勢必會影響兩類人群:開源庫的開發(fā)者和開源庫的使用者。
開源庫的開發(fā)者在接下來的一段時間里可能會是最頭疼的人,因為本篇文章發(fā)布的時候,你已經無法再向JCenter提交任何庫的更新了。
根據JFrog給出的時間節(jié)點,自2021年3月31日之后,JCenter就不再接受任何新的提交。
剛巧我最近有個開源庫(PermissionX)的新版本要發(fā)布,前兩天像往常一樣向JCenter去提交新版本,結果發(fā)現(xiàn)卻沒能提交成功。然后我到JFrog官網才找到了這條時間節(jié)點,真的是非常遺憾,新版本暫時發(fā)布不成了。
而如果你是開源庫的的使用者,那么短時間內你還可以不用擔心,因為JCenter會繼續(xù)提供服務到2022年2月1日。在那之前,你仍然可以在Android Studio中正常拉取2021年3月31日之前提交至JCenter的開源庫。
關于JFrog的聲明里比較重要的內容和時間節(jié)點差不多就是這些了,但是對于廣大的Android開發(fā)者而言,我們現(xiàn)在應該做什么呢?
我認為現(xiàn)在能做的事情還不太多,因為整個事件當中,還有一位非常核心的玩家沒有表態(tài),那就是Google。
剛才說了,Google也是這次事件的受害者,本來Android Studio創(chuàng)建項目時默認集成JCenter倉庫,我還以為Google是和JFrog建立了戰(zhàn)略合作關系。沒想到被JFrog一則停止服務聲明,直接影響了整個Android開源庫的生態(tài)。
而這個事情發(fā)生得也比較突然,JFrog2月3日才宣布的消息,3月31日就不再接受任何新庫的提交了。感覺Google對此也沒有充足的時間進行應對,因此只在Android開發(fā)者官網發(fā)布了這樣一條簡單的聲明:
大概意思就是說,JCenter要停止服務了,建議大家改用Maven Central,Google會在不久之后發(fā)布遷移方案。
其實我印象中在JCenter之前,Android默認的第三方倉庫就是Maven Central,現(xiàn)在看上去又是要改回去的意思?
我就在尋思著,Google會不會有計劃自建一個第三方開源項目的倉庫,從而不用再擔心這種突然被停止服務的困擾。于是我又跟Google那邊去求證了一下,得到的答復是Google并沒有此計劃,那么由此看來大概率是要使用Maven Central了。
如果你現(xiàn)在想要將自己的開源庫發(fā)布到Maven Central上,可以參考這篇文檔來進行操作:
https://maven.apache.org/repository/index.html
我發(fā)現(xiàn)有些庫的反應非???,現(xiàn)在已經將新版本發(fā)布到Maven Central上了,比如說Glide。
可以看到,在repositories當中,Glide已經把jcenter()替換成了mavenCentral()。
但手動添加倉庫畢竟很難形成標準,因此這件事還是需要Google來推動。相信要不了多久,Android Studio創(chuàng)建新項目時默認的倉庫就會由jcenter()變成mavenCentral()了。
不過目前我們只是可以將一個庫的新版本發(fā)布到Maven Central上,而以前的老版本還是保留在JCenter上的,這些老版本會在明年2月1日徹底無法訪問,所以我們仍然需要Google盡快給出遷移方案,從而讓第三方的開源庫可以無縫從JCenter切換到Maven Central。
遷移方案會在以下網址更新,當然到時候我也會寫文章來進行講解的。
https://developer.android.com/studio/build/jcenter-migration
作為一名開發(fā)者,我們理應保持著時刻擁抱變化的心態(tài)和能力。然而作為一名Android開發(fā)者,我有時又忍不住想吐槽一句:我們的變化是不是有點太快了?