概要
ライブラリを読み込みの際に、場合によってはbuild.gradleにrepositoryを追加する必要があるのですが、この方法が分からず時間を使ってしまったのでメモしておきます。
結論
先に簡単に結論を書くと、gradleのバージョンが7系以上の場合、repositoryの設定はbuild.gradleではなくsetting.gradleで行う必要があります。
以下、詳しく説明します。
やりたかっこととエラー内容
私の場合、グラフを作成するためのライブラリであるMPAndroidChartを利用しようと思い調べていたところ、build.gradleを以下のように2箇所修正すれば良いことがわかりました。
repositoriesにmaven { url 'https://jitpack.io' }を追加dependenciesにimplementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'を追加
なお、Androidアプリではbuild.gradleが2つありますが、前者はルート直下のbuild.gradleに、後者はルート直下のapp直下にあるbuild.gradleに追記しました。
(それぞれ、すでにrepositoriesとdependenciesの記載があったためです)
しかし、ビルド時に以下のようなエラーになりました。
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のバージョンが原因という性質上、人によって書いていることは違いますが...