可能有许多朋友都已经知道了这个事情,JCenter即将在Android上被废弃了。
这么重大的事件也是相当出乎我意料,本来我以为是Google又要整什么幺蛾子,因为Google很喜欢废弃东西。结果了解下来,Google这次也是受害者。
今年2月3号,JFrog(JCenter的运营方),在其官网宣布了这一重大决定,包括Bintray、JCenter在内的多项软件包管理和分发服务都将停止运营。原文链接如下:
https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/
JFrog的这则声明可谓是杀伤力极强,为什么这么说呢?因为它即将影响到的是所有的Android开发者,是的你没听错,是所有。
只要你是一名Android开发者,就一定使用了JFrog提供的服务,即使你没听过JFrog这个名字,你也一定在不知不觉中使用了JFrog的服务。
当我们在Android Studio当中新建一个Android项目时,你总是可以在build.gradle文件里找到这样一段配置:
- repositories {
- google()
- jcenter()
- }
这段配置的意思是,指定当前的项目工程可以从哪些仓库上去拉取依赖库给当前项目使用。
其中,google()指的是Google自家的仓库,比如我们使用的很多第一方库,如RecyclerView, Jetpack Components等等就是从这里拉取的。
而jcenter()指的就是由JFrog提供的JCenter仓库,几乎Android上所有的第三方开源项目都会选择将库发布到这里,比如你在项目中集成的OkHttp、Retrofit、RxJava等等第三方库都是从这里拉取的。
Android的第三方库规模庞大,数量远超Google的第一方库,可以说任何一个Android项目都会依赖许多的第三方开源项目。这也是为什么我说,JFrog的这则声明杀伤力极强了。
接下来我来跟大家具体介绍一下JCenter的停止服务会带来哪些影响,以及这些影响生效的时间节点。
毫无疑问,JCenter的停止服务势必会影响两类人群:开源库的开发者和开源库的使用者。
开源库的开发者在接下来的一段时间里可能会是最头疼的人,因为本篇文章发布的时候,你已经无法再向JCenter提交任何库的更新了。
根据JFrog给出的时间节点,自2021年3月31日之后,JCenter就不再接受任何新的提交。
刚巧我最近有个开源库(PermissionX)的新版本要发布,前两天像往常一样向JCenter去提交新版本,结果发现却没能提交成功。然后我到JFrog官网才找到了这条时间节点,真的是非常遗憾,新版本暂时发布不成了。
而如果你是开源库的的使用者,那么短时间内你还可以不用担心,因为JCenter会继续提供服务到2022年2月1日。在那之前,你仍然可以在Android Studio中正常拉取2021年3月31日之前提交至JCenter的开源库。
关于JFrog的声明里比较重要的内容和时间节点差不多就是这些了,但是对于广大的Android开发者而言,我们现在应该做什么呢?
我认为现在能做的事情还不太多,因为整个事件当中,还有一位非常核心的玩家没有表态,那就是Google。
刚才说了,Google也是这次事件的受害者,本来Android Studio创建项目时默认集成JCenter仓库,我还以为Google是和JFrog建立了战略合作关系。没想到被JFrog一则停止服务声明,直接影响了整个Android开源库的生态。
而这个事情发生得也比较突然,JFrog2月3日才宣布的消息,3月31日就不再接受任何新库的提交了。感觉Google对此也没有充足的时间进行应对,因此只在Android开发者官网发布了这样一条简单的声明:
大概意思就是说,JCenter要停止服务了,建议大家改用Maven Central,Google会在不久之后发布迁移方案。
其实我印象中在JCenter之前,Android默认的第三方仓库就是Maven Central,现在看上去又是要改回去的意思?
我就在寻思着,Google会不会有计划自建一个第三方开源项目的仓库,从而不用再担心这种突然被停止服务的困扰。于是我又跟Google那边去求证了一下,得到的答复是Google并没有此计划,那么由此看来大概率是要使用Maven Central了。
如果你现在想要将自己的开源库发布到Maven Central上,可以参考这篇文档来进行操作:
https://maven.apache.org/repository/index.html
我发现有些库的反应非常快,现在已经将新版本发布到Maven Central上了,比如说Glide。
可以看到,在repositories当中,Glide已经把jcenter()替换成了mavenCentral()。
但手动添加仓库毕竟很难形成标准,因此这件事还是需要Google来推动。相信要不了多久,Android Studio创建新项目时默认的仓库就会由jcenter()变成mavenCentral()了。
不过目前我们只是可以将一个库的新版本发布到Maven Central上,而以前的老版本还是保留在JCenter上的,这些老版本会在明年2月1日彻底无法访问,所以我们仍然需要Google尽快给出迁移方案,从而让第三方的开源库可以无缝从JCenter切换到Maven Central。
迁移方案会在以下网址更新,当然到时候我也会写文章来进行讲解的。
https://developer.android.com/studio/build/jcenter-migration
作为一名开发者,我们理应保持着时刻拥抱变化的心态和能力。然而作为一名Android开发者,我有时又忍不住想吐槽一句:我们的变化是不是有点太快了?