LoginSignup
4
3

More than 3 years have passed since last update.

JCenterシャットダウンの影響調査中にハマった罠

Last updated at Posted at 2021-03-18

BintrayやJCenterがシャットダウンされることになり、jcenter, bintray 廃止で自分のAndroidアプリに対応したことのメモを参考に調査していた際に、jcenterにだけ存在するライブラリが含まれていても、エラーにならないことがあったので、原因を調査しました。

jcenterの参照が外れない原因

担当しているアプリではgroupie(移行してくれ頼む〜〜:bow:)を利用しているため、jcenterの依存を除外するとエラーになる想定でしたが、エラーになりませんでした。

jcenterの除外
repositories {
    mavenCentral()
    google()
-    jcenter()
}

実行してもエラーにならない.
$ ./gradlew assemble --refresh-dependencies

・・・

BUILD SUCCESSFUL in 1m 45s
36 actionable tasks: 36 up-to-date

最初に実行した時には、jitpackも利用していることかと思いましたが、jitpackを外しても参照が外れないため、少し調べるとStack Overflowにこんな記事を見つけました。

どうやらgradleプラグインが、jcenterレポジトリへの依存を追加する場合があるようです。

対応方法

上述したStack Overflowを参考に、jcenterリポジトリを追加するプラグインを見つけるスクリプトを作り対応をしました。

リポジトリを追加するプラグインを見つけるスクリプト
allprojects {
    repositories.all {
        if (url.host == 'jcenter.bintray.com') {
            new Throwable('jcenter repository was just added').printStackTrace()
        }
    }
}

このスクプリトを./gradlew --init-script init.gradle helpで実行すると下記のようなエラーが表示されます。

java.lang.Throwable: jcenter repository was just added 
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
・・・
        at io.realm.gradle.Realm.apply(Realm.groovy:59)
        at io.realm.gradle.Realm.apply(Realm.groovy)
・・・

エラー内容から、推測出来るプラグインをコメントアウトして、再度./gradlew assemble --refresh-dependenciesを実行すると期待通りにエラーが表示されました。

> Could not resolve all files for configuration 
         project :app
   > Could not find com.xwray:groupie:2.9.0.
     Required by:
         project :app
   > Could not find com.xwray:groupie-kotlin-android-extensions:2.9.0.
     Required by:
         project :app
   > Could not find com.xwray:groupie-databinding:2.9.0.
     Required by:
         project :app
   > Could not find com.google.android.exoplayer:exoplayer-core:2.13.1.
     Required by:
         project :app
   > Could not find com.google.android.exoplayer:exoplayer-hls:2.13.1.
     Required by:
         project :app
   > Could not find com.google.android.exoplayer:exoplayer-ui:2.13.1.
     Required by:
         project :app

最後に

今回この挙動を踏んでしまい、jcenterのシャットダウンの影響調査で少し困りました。
もしかしたら同じような罠にハマる方もいるかと思うので、一度影響調査してみてはいかがでしょうか。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3