“JCenter 已结束生命”android lint 警告,替代品是什么?

Val*_*kov 92 android android-studio android-gradle-plugin

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

在此处输入图片说明

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

Val*_*kov 107

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

JFrog 是一家维护许多 Android 项目使用的 JCenter 工件存储库的公司,最近宣布弃用 JCenter 并即将停用。根据公告,JCenter 将允许在 2022 年 2 月 1 日前下载现有工件。

在 JCenter 上发布工件的开发人员应该开始将他们的包迁移到新主机,例如Maven Central

在不久的将来,我们将在此页面上提供有关从 JCenter 迁移 Android 项目的更多信息。

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

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

repositories {
    google()

//  jcenter()       // <- removed
    mavenCentral()  // <- added
}
Run Code Online (Sandbox Code Playgroud)

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

一些相关资源:


Iva*_*ila 40

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

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

Run Code Online (Sandbox Code Playgroud)

  • 从 2022 年 2 月 1 日开始,“jcenter”将[无限期地作为只读存储库](https://blog.gradle.org/jcenter-shutdown),这意味着开发人员将无法推送新更新,您的应用程序将除非您添加“jcenter”上不可用的较新版本的库,否则可以工作 (5认同)

use*_*MGU 5

不要心急!在 Android Studio 的开发人员针对这种情况制定适当的自动解决方案之前,无需采取任何措施