"JCenter is at end of life" android lint 警告,替换的是什么?

"JCenter is at end of life" android lint warning, what is the replacement?

Android Studio Arctic Fox Canary 8开始警告JCenter is at end of life

但我不能只删除 jcenter() 声明,因为它包含很多 android 工件,这会导致 Could not resolve all artifacts 错误。解决此警告的正确方法是什么?

有一个描述问题的文档部分:JCenter deprecation and end of service。您可以通过展开检查说明 (Ctrl+F1) 找到 link。文档指出:

JFrog, the company that maintains the JCenter artifact repository used by many Android projects, recently announced the deprecation and upcoming retirement of JCenter. According to the announcement, JCenter will allow downloads of existing artifacts until February 1, 2022.

Developers who publish artifacts on JCenter should start migrating their packages to a new host, such as Maven Central.

In the near future, we will provide additional information about migrating Android projects away from JCenter on this page.

扩展检查说明(以及上面的文档)建议将 jcenter() 替换为 mavenCentral()。实际上 JCenterMaven Central 的超集,但这样的替换不会解决问题,直到所有 JCenter 您的项目使用的工件将移至 Maven Central.

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

repositories {
    google()

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

如果您是库作者,您应该迁移到另一个存储库,可能是 Maven Central。请注意,根据 JCenter deprecation announcement 新提交仅在 2021 年 3 月 31 日之前被允许。

一些相关资源:

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

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

别着急! 在 Android Studio 的开发人员针对这种情况做出适当的自动解决方案之前,无需执行任何操作

找到说 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 核心依赖仍然需要 JCenter。

Android Studio 4.1.2 和 AGP(Android Gradle 插件)仍然需要仅在 JCenter 上的依赖项 (trove4j) 版本。

这已在 AGP 4.2.0 中解决,但仍处于测试阶段,需要 Android Studio 4.2 测试版或更高版本。

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