【发布时间】:2026-01-18 15:10:01
【问题描述】:
Android Studio北极狐金丝雀8开始警告JCenter is at end of life
但我不能只删除 jcenter() 声明,因为它承载了很多 android 工件,它会导致 Could not resolve all artifacts 错误。解决此警告的正确方法是什么?
【问题讨论】:
标签: android android-studio android-gradle-plugin
Android Studio北极狐金丝雀8开始警告JCenter is at end of life
但我不能只删除 jcenter() 声明,因为它承载了很多 android 工件,它会导致 Could not resolve all artifacts 错误。解决此警告的正确方法是什么?
【问题讨论】:
标签: android android-studio android-gradle-plugin
有一个描述问题的文档部分:JCenter deprecation and end of service。您可以通过展开检查说明 (Ctrl+F1) 找到该链接。文档指出:
JFrog,维护许多 Android 项目使用的 JCenter 工件存储库的公司, 最近宣布了 JCenter 的弃用和即将退役。根据the announcement, JCenter 将允许在 2022 年 2 月 1 日之前下载现有工件。
在 JCenter 上发布工件的开发人员应该开始将他们的包迁移到新主机,例如 作为Maven Central。
在不久的将来,我们将提供有关将 Android 项目从 此页面上的 JCenter。
扩展的检查说明(以及上述文档)建议将jcenter() 替换为mavenCentral()。实际上,JCenter 是 Maven Central 的超集,但是在您的项目使用的所有 JCenter 工件都被移动之前,这样的替换不会解决问题到 Maven 中心。
我认为最佳解决方案是等到您正在使用的库从jcenter() 移出并尝试用mavenCentral() 替换它。如果仍然缺少某些工件,请查看文档,可能它们已移至另一个存储库,您也应该将其添加到 repositories 列表中。
repositories {
google()
// jcenter() // <- removed
mavenCentral() // <- added
}
如果您是库作者,您应该迁移到另一个 repo,可能是 Maven Central。请注意,根据 JCenter deprecation announcement,仅允许在 2021 年 3 月 31 日之前提交新的提交。
一些相关资源:
【讨论】:
我认为要坚持不间断的迁移,而不是删除 jcenter(),您可以保留两者并且只更改脚本本身的顺序。这样,当开发人员正在迁移他们的工件时,jcenter() 将始终是mavenCentral() 的后备。
repositories {
google()
mavenCentral()
jcenter()
}
【讨论】:
jcenter 将变为 work as a read-only repository indefinitely,这意味着开发人员将无法推送新的更新,除非您添加不可用的较新版本的库,否则您的应用将正常运行jcenter
别着急! 在 Android Studio 的开发人员针对这种情况做出适当的自动解决方案之前,什么都不需要做
【讨论】:
等等。让 JCenter 结束服务。然后,拉出新的存储库。完全忽略警告也没关系。
【讨论】:
找到说 jcenter() 的行并在每行之前添加 mavenCentral() (确保在找到 jcenter() 的两个位置都添加 mavenCenteral()。)
在 JCenter 之前添加 Maven Central 意味着默认使用 Maven Central,JCenter 仍将用作后备。
如果您今天尝试从您的 Android 项目中完全删除 jcenter(),您可能会收到以下错误。
> 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 和 AGP(Android Gradle 插件)仍然需要仅在 JCenter 上的依赖项 (trove4j) 版本。
这已在 AGP 4.2.0 中解决,但仍处于测试阶段,需要 Android Studio 4.2 测试版或更高版本。
【讨论】: