Webエンジニアのメモ帳

技術的な話を中心に書いています。

【Android開発】ライブラリ読み込みの際に使用するrepositoryを追加する方法

概要

ライブラリを読み込みの際に、場合によってはbuild.gradlerepositoryを追加する必要があるのですが、この方法が分からず時間を使ってしまったのでメモしておきます。

結論

先に簡単に結論を書くと、gradleのバージョンが7系以上の場合、repositoryの設定はbuild.gradleではなくsetting.gradleで行う必要があります。

以下、詳しく説明します。

やりたかっこととエラー内容

私の場合、グラフを作成するためのライブラリであるMPAndroidChartを利用しようと思い調べていたところ、build.gradleを以下のように2箇所修正すれば良いことがわかりました。

  1. repositoriesmaven { url 'https://jitpack.io' }を追加
  2. dependenciesimplementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'を追加

なお、Androidアプリではbuild.gradleが2つありますが、前者はルート直下のbuild.gradleに、後者はルート直下のapp直下にあるbuild.gradleに追記しました。

(それぞれ、すでにrepositoriesdependenciesの記載があったためです)

しかし、ビルド時に以下のようなエラーになりました。

FAILURE: Build completed with 7 failures.
1: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':app:checkDebugAarMetadata'.
> Could not resolve all files for configuration ':app:debugRuntimeClasspath'.
> Could not find com.github.PhilJay:MPAndroidChart:v3.1.0.
Searched in the following locations:
- https://dl.google.com/dl/android/maven2/com/github/PhilJay/MPAndroidChart/v3.1.0/MPAndroidChart-v3.1.0.pom
- https://repo.maven.apache.org/maven2/com/github/PhilJay/MPAndroidChart/v3.1.0/MPAndroidChart-v3.1.0.pom
Required by:
project :app

エラーの原因と解決方法

エラーを読むと、追加したはずのjitpackのレポジトリの参照ができていない様子。

調べたところ、maven { url 'https://jitpack.io' }の記載箇所が違いました。

gradleのバージョンが7以上の場合はbuild.gradleではなく、settings.gradleに記載する必要がありました。

setting.gradleの全体としては以下のようになります。

dependencyResolutionManagement {
  repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
  repositories {
    google()
    mavenCentral()
    maven { url 'https://jitpack.io' }  // 上の2行は元々書かれていたので、この行を追加しました
  }
}

rootProject.name = "{プロジェクト名}"
include ':app'

参考

最終的には以下のサイトが解決の糸口になりました。gradleのバージョンが原因という性質上、人によって書いていることは違いますが...