シャットダウンが延期されました 読み取り専用として存続します
JCenter のシャットダウンについては2022年2月1日へ延期になりました。
https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/
UPDATE: To better support the community in this migration, JFrog has extended the JCenter new package versions submission deadline through March 31st 2021.
To clarify, the JCenter repository will keep serving packages for 12 months until February 1st 2022. Only the JCenter REST API and UI will be sunsetted on May 1st 2021.
読み取り専用として存続することが2021年4月28日発表されました
UPDATE 4/27/2021: We listened to the community and will keep JCenter as a read-only repository indefinitely. Our customers and the community can continue to rely on JCenter as a reliable mirror for Java packages.
何が起きたか
Bintary、JCenter、GoCenter および ChartCenter が 2021年5月1日 2022年2月1日でシャットダウンすることが2月3日に JFrog から発表された。
スケジュール
月日 | 内容
---|---
2月28日 | Bintray、JCenter、GoCenter および ChartCenter が新しい提出を受け付けなくなる。GoCenter と ChartCenter の Web サイトは無効化される
4月12日 / 26 日 | シャットダウンに向けた短期メンテナンス
5月1日 | Bintray、JCenter、GoCenter および ChartCenter シャットダウン
最新のスケジュールは JFrog の発表を参照してください。
Android アプリ開発でどのような影響を受ける
- JCenter から Artifacts を手に入れられなくなる(依存解決先リポジトリがなくなる)
- 各 Artifacts が他リポジトリ(Maven Central とか JitPack とか)へ移動すると思われるのでそれに合わせてビルドファイルを修正する必要が発生する
- 開発終了などで JCenter 以外からの取得が望み薄の場合、今のうちに手元に確保しておく必要がある
いま JCenter を外すとどうなる
最低でもどれくらいの範囲で困るかということを確認するため Android Studio 4.1.2 で新規プロジェクトを起こして検証した。 JCenter を外し、代わりに Maven Central を設定する。
// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { ext.kotlin_version = "1.4.21" repositories { google() - jcenter() + mavenCentral() } dependencies { classpath "com.android.tools.build:gradle:4.1.2" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } }
この状態で依存解決を試みると、次のエラーになる。
A problem occurred configuring root project 'My Application'. > 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 Possible solution: - Declare repository providing the artifact, see the documentation at https://docs.gradle.org/current/userguide/declaring_repositories.html
trove4j
なるものを僕はここで初めて目にしたのだけれど java.util.Collections
の高速かつ軽量な実装をしたものらしい。
Android Gradle Plugin 4.1.2 はそれに依存しているが、Maven Central にはそれが無いので引き当てることができなかった。
Q. AGP の問題は解決されそうか
A.されそう
Android Studio Team の @droidxav 曰く、
- AGP 7.0 では Maven Central がホスティングする新しいバージョンに依存するように移行済み
- この変更を 4.2 に、場合によっては 4.1 にバックポートすることも検討している
- 問題を軽減させるための他の手段も調査している
Q. AGP 以外に問題になるものを洗い出したい
Android Studio Arctic Fox でプロジェクトを開いてトップレベルのビルドファイル build.gradle
を次のようにする。
buildscript { repositories { google() mavenCentral() } dependencies { classpath "com.android.tools.build:gradle:7.0.0-alpha05" // other dependencies } } allprojects { repositories { google() mavenCentral() } }
この状態で Sync Project with Gradle Files
で依存解決を走らせれば Maven Central に無いものを洗い出すことはできる。例として 2021年2月5日時点 JCenter のみで提供されている Groupie への依存があると、次のような warning(ビルドではエラー)になる。
Kotlin ほか関連ライブラリはすべて Maven Central で利用可能
In light of the news with JCenter and Bintray, please know that all Kotlin libraries that we provide, such as coroutines, serialization, etc. are available on Maven Central. In addition, we recently migrated our EAPs to Maven Central.
— Kotlin (@kotlin) 2021年2月4日