JCenterを削除してなかった話

こんにちは。
この頃までJCenterを削除していなかったことが判明し、読み取り専用にはなってしまい使えることは使えるのですが。。。
念の為、JCenterを廃止する対応したので対応方針を書いていこうと思います。

JCenterサービス終了 -> 読み取り専用に

JCenterが終了したっぽい。
でも、未だに使えるような。。。?
読み取り専用になりました。

JCenterでしか使えないライブラリの調査方法

  1. gradle内にある jcenter() を mavenCentral() にリプレイスする。

  2. Sync Project with Gradle Filesを実行する。

  3. 成功する場合は、今まで通り使えるはず。

  4. 失敗した場合は、 下記を実行して失敗しているライブラリを把握。

 ./gradlew --refresh-dependencies --stacktrace --info

方針

  1. 他のライブラリへリプレイスする。

  2. 自分で実装する。

  3. JCenterから取得したライブラリを使い続ける。

1か2が推奨ですね!
1に関しては、代替のライブラリを簡単に見つかれば特段工数が掛からないですね。
まぁこの際、リファクタリングするいい機会と捉えてじっくりライブラリ周りを調査してもいいかもしれないですね。
今までのライブラリより高性能だったり質がいいライブラリに出会えるかも。、
2に関しては、自分で実装するですがかなりキツイですよね。
ライブラリを導入するぐらいなので、開発コストの削減等やラクしたい・質が確保されているものを使いたいからやるのですから、これを0から作るのはとても大変で工数もかかりますよね。。。(僕だったらやらないです。)
ということで、代替ライブラリが見つからずあまり工数をかけたくない人のための解決法を下記で説明したいと思います。

解決策: JCenterから取得したライブラリを使い続ける

現行でJCenterから確実に読み取ることができているライブラリをローカルに保存してそのまま使うという手法です。(邪道ですので、あまりオススメしないです。)

方法

今回は `com.google.android:flexbox:2.0.1` を例に記述していきます。

Android Studioからキャッシュしているライブラリをとってくる

まず初めに、JCenterから正常にダウンロードしているライブラリをキャッシュから調べてとってきます。
Project/External Libraries内の該当ライブラリを選択し、`Library Properties…` を選択します。

Library Properties…
ディレクトリを確認

上記でディレクトリが分かったので、その付近にある `.jar` , `.pom` , `aar` ファイルを見つける

libsディレクトリに配置

libsディレクトリがない場合は、libsディレクトリを作成する。
`com.google.android:flexbox:2.0.1` と同じディレクトリ構成にし、上記で取得したファイルを配置する。(ディレクトリ構成は任意で大丈夫です。)

libs内のディレクトリ構成

Gradleファイルを修正

build.gradle(プロジェクト)内にlibsを参照するコードを追加。
jcenter() が mavenCentral() になっていることを確認して、rebuildで上手くいくはず。

allprojects {
     repositories {
          maven { url = rootProject.file('libs') }
     }
}


今回はJCenterから参照しているライブラリの調査とJCenter廃止方法を書いてきました。(方法は力技。。。)
2023年2月現在でもJCenterからライブラリは読み取ることができるのであまり緊急性は高くないのかもしれないですが、長期的に見たら廃止した方がいいと思い、プロジェクトから廃止しました。
解決方法に関しては、どちらかというと工数がかけられなくて早急に対応しなければいけない応急処置として考えていただければ幸いです。
それではまたの機会で。

Android、好きぃ〜〜〜

いいなと思ったら応援しよう!