“ JCenter 即将寿终正寝”机器人皮棉警告,什么是替代品?

安卓工作室北极狐金丝雀8开始警告 JCenter is at end of life

enter image description here

But I cannot just delete jcenter() declarations since it hosts a lot of android artifacts, it would lead to Could not resolve all artifacts error. What is the right way to solve this warning?

27088 次浏览

有一个文档部分描述了这个问题: JCenter 弃用和服务结束。您可以通过扩展检查说明(Ctrl+F1)找到链接。文件中写道:

JFrog 是一家维护许多 Android 项目使用的 JCenter 工件库的公司, 最近宣布取消和即将退休的 JCenter。根据 公告, JCenter 将允许下载现有的工件,直到2022年2月1日。

在 JCenter 上发布工件的开发人员应该开始将他们的包迁移到一个新的主机上,比如 作为 玛文中心

在不久的将来,我们将提供更多关于从 在这个页面上的 JCenter。

扩展的检查描述(以及上面的文档)建议用 mavenCentral()代替 jcenter()。实际上,JCenter玛文中心的一个超集,但是这样的替换只有在项目使用的所有 JCenter构件都移动到 玛文中心时才能解决问题。

我认为最佳的解决方案是等到您正在使用的库从 jcenter()中移出并尝试用 mavenCentral()替换它。如果仍然缺少某些工件,请查看文档,它们可能被移动到另一个存储库中,您也应该将其添加到 repositories列表中。

repositories {
google()


//  jcenter()       // <- removed
mavenCentral()  // <- added
}

If you're a library author you should migrate to another repo, probably it would be 玛文中心. Note that according to the JCenter deprecation announcement new submissions are allowed only until March 31st 2021.

一些相关资源:

我认为,要坚持不中断的迁移,而不是删除 jcenter(),您可以同时保持两者,并且只改变脚本本身的顺序。这样,当开发人员正在迁移他们的构件时,jcenter()将始终是 mavenCentral()的备用方案。

repositories {
google()
mavenCentral()
jcenter()
}


别急! 在 Android Studio 的开发人员为这种情况提供适当的自动解决方案之前,不需要做任何事情

找到说 jcenter ()的行,并在它们之前添加 mavenCentral ()(确保在找到 jcenter ()的两个位置都添加 mavenCentral ())

在 JCenter 之前添加 MavenCentral 意味着 MavenCentral 在默认情况下将被使用,而 JCenter 仍将被用作备份。

If you attempt to remove jcenter() completely today from your Android project, you may get the following error.

> Could not resolve all artifacts for configuration ':classpath'.
> Could not find org.jetbrains.trove4j:trove4j:20160824.
Searched in the following locations:
- https://dl.google.com/dl/android/maven2/org/jetbrains/trove4j/trove4j/20160824/trove4j-20160824.pom
- https://repo.maven.apache.org/maven2/org/jetbrains/trove4j/trove4j/20160824/trove4j-20160824.pom
Required by:
project : > com.android.tools.build:gradle:4.1.2 > com.android.tools.build:builder:4.1.2 > com.android.tools:sdk-common:27.1.2

出现这个错误的原因是 Android Core 依赖项仍然需要 JCenter。

Android Studio 4.1.2 and AGP (Android Gradle Plugin) still require a version of a dependency (trove4j) that is only on JCenter.

这个问题在 AGP4.2.0中已经解决了,但是仍处于测试阶段,需要 Android Studio 4.2测试版或更新版本。

等待。让 JCenter 结束服务。然后,取出新的存储库。完全忽略警告是可以的。