Android StudioでGradle Syncやプロジェクトのビルドを実行したときに、
「Could not find」
というエラーが表示されることがあります。
このエラーは、Gradleが指定されたライブラリやプラグインなどの依存関係を、設定されているリポジトリから見つけられなかったときに発生します。
主な原因としては、ライブラリ名やバージョンの指定ミス、リポジトリ設定の不足、古いライブラリの利用、ネットワークやGradleキャッシュの問題などが考えられます。
この記事では、Android StudioのGradleで「Could not find」と表示される主な原因と解決方法を解説します。
- 「Could not find」とは
- 主な原因
- エラーメッセージを確認する
- ライブラリ名を確認する
- バージョン番号を確認する
- repositoriesの設定を確認する
- 追加のMaven Repositoryが必要か確認する
- ライブラリの公開先が変更されていないか確認する
- ライブラリの配布が終了していないか確認する
- 古い記事やサンプルコードを確認する
- GradleのOffline modeを確認する
- インターネット接続を確認する
- Gradle Syncを実行する
- Gradleの依存関係を再取得する
- Version Catalogを使用している場合
- プラグインで「Could not find」が出る場合
- 依存関係の記述方法を確認する
- エラーの「Required by」を確認する
- エラー別の確認ポイント
- 解決しない場合の確認手順
- まとめ
「Could not find」とは
「Could not find」は、Gradleが指定された依存関係をリポジトリ内で見つけられなかったことを示すエラーです。
例えば、次のようなエラーが表示されることがあります。
Could not find com.example:library:1.0.0.
この場合、Gradleは
com.example:library:1.0.0
という依存関係を探しましたが、設定されているリポジトリから取得できなかったことを意味します。
「Could not find」は、
Could not resolve all files for configuration
などのエラーと一緒に表示されることもあります。
主な原因
Gradleで「Could not find」が発生する主な原因には、次のようなものがあります。
- ライブラリ名を間違えている
- group IDやartifact IDを間違えている
- 存在しないバージョンを指定している
- 必要なリポジトリが設定されていない
- ライブラリの公開先リポジトリが変更された
- ライブラリの配布が終了している
- 古い記事やサンプルコードの依存関係を使用している
- GradleのOffline modeが有効になっている
- ネットワーク接続に問題がある
- Gradleのキャッシュに問題がある
ポイント:
「Could not find」の後ろに表示されている
group ID、
artifact ID、
version
を確認すると、どの依存関係を取得できなかったのかを特定できます。
エラーメッセージを確認する
まず、BuildウィンドウやGradle Syncのエラー内容を最後まで確認します。
例えば、次のようなエラーが表示されている場合があります。
Could not find com.example:library:1.0.0.
Searched in the following locations:
https://dl.google.com/dl/android/maven2/...
https://repo.maven.apache.org/maven2/...
この場合、Gradleは表示されたリポジトリを検索しましたが、対象のライブラリを見つけられなかったことが分かります。
エラー内に
Searched in the following locations
と表示されている場合は、Gradleがどのリポジトリを確認したのかも判断できます。
ライブラリ名を確認する
依存関係に記述したライブラリ名が間違っていると、Gradleは対象のファイルを見つけることができません。
例えば、次のような依存関係を記述しているとします。
implementation("com.example:library:1.0.0")
このとき、
com.example
や
library
の部分に誤字があると、
Could not find
が発生します。
ライブラリの公式ドキュメントなどを確認し、依存関係の記述が正しいか確認します。
バージョン番号を確認する
ライブラリ名が正しくても、存在しないバージョンを指定している場合は取得できません。
implementation("com.example:library:9.9.9")
指定した
9.9.9
が公開されていなければ、Gradleは対象ファイルを見つけられません。
ライブラリの公式ドキュメントや公開されているバージョン一覧を確認し、実際に存在するバージョンを指定します。
repositoriesの設定を確認する
ライブラリが存在していても、そのライブラリを公開しているリポジトリがGradleに設定されていなければ取得できません。
Androidプロジェクトでは、一般的にGoogle Maven RepositoryとMaven Centralが使用されます。
repositories {
google()
mavenCentral()
}
現在のGradleプロジェクトでは、
settings.gradle
または
settings.gradle.kts
の
dependencyResolutionManagement
内にリポジトリを設定している場合があります。
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
}
}
使用するライブラリによっては、
google()
と
mavenCentral()
以外のリポジトリを追加する必要があります。
必要なリポジトリはライブラリの公式ドキュメントで確認してください。
追加のMaven Repositoryが必要か確認する
一部のライブラリはMaven CentralやGoogle Maven Repositoryではなく、独自のMaven Repositoryなどで公開されています。
その場合は、指定されたリポジトリを追加する必要があります。
repositories {
google()
mavenCentral()
maven {
url = uri("https://example.com/maven")
}
}
ただし、必要のないリポジトリをむやみに追加するのではなく、使用しているライブラリの公式な配布先を確認して設定します。
ライブラリの公開先が変更されていないか確認する
ライブラリによっては、以前とは異なるリポジトリへ公開先が変更されることがあります。
古いサンプルコードでは以前のリポジトリを前提としている場合があるため、現在の配布先では取得できないことがあります。
特に古いAndroidプロジェクトを開いた場合は、ライブラリの現在の公式ドキュメントを確認します。
ライブラリの配布が終了していないか確認する
長期間更新されていないライブラリでは、配布そのものが終了している場合があります。
以前は取得できた依存関係でも、リポジトリから削除されると
Could not find
が発生することがあります。
この場合は、後継ライブラリや別のライブラリへ置き換える必要がある場合があります。
古い記事やサンプルコードを確認する
Web上の古いAndroid Studioの記事やサンプルコードには、現在では利用できない依存関係が記載されていることがあります。
記事が作成された時点では正常に動作していても、ライブラリのバージョン変更や配布先の変更によって現在は取得できなくなっている場合があります。
サンプルコードをそのままコピーした場合は、現在の公式ドキュメントと依存関係の記述を比較します。
GradleのOffline modeを確認する
GradleのOffline modeが有効になっていると、インターネットへ接続せず、ローカルに保存されているキャッシュだけを利用します。
必要なライブラリがまだダウンロードされていない場合、Offline modeでは取得できません。
Android StudioのGradle設定を確認し、Offline modeが有効になっている場合は無効にしたうえでGradle Syncを実行します。
インターネット接続を確認する
ネットワークに接続できていない場合、Gradleは外部リポジトリからライブラリを取得できません。
ブラウザなどでインターネット接続を確認し、Wi-Fiなどが不安定な場合は接続し直します。
ただし、ネットワーク接続そのものに問題がある場合は、
Could not GET
や
Connection timed out
などの別のエラーが一緒に表示されることもあります。
Gradle Syncを実行する
依存関係を変更した後にGradle Syncが正常に完了していない場合は、依存関係が正しく反映されていないことがあります。
Android Studioから
Sync Project with Gradle Files
などを実行して、Gradleの設定を再同期します。
一時的な取得エラーであれば、再同期によって解決する場合があります。
Gradleの依存関係を再取得する
Gradleのキャッシュに問題がある場合は、依存関係を再取得すると改善することがあります。
プロジェクトのTerminalから、次のように実行します。
./gradlew build --refresh-dependencies
Windowsでは、環境によって次のように実行します。
gradlew.bat build --refresh-dependencies
これにより、依存関係のキャッシュが再確認され、必要なファイルの取得が再試行されます。
Version Catalogを使用している場合
Gradle Version Catalogを使用しているプロジェクトでは、
libs.versions.toml
にライブラリ名やバージョンを定義している場合があります。
[versions]
example = "1.0.0"
[libraries]
example-library = { module = "com.example:library", version.ref = "example" }
この場合、
build.gradle.kts
だけでなく、
libs.versions.toml
のmodule名やバージョンにも間違いがないか確認します。
プラグインで「Could not find」が出る場合
ライブラリだけでなく、Gradleプラグインを取得できない場合にも
Could not find
が表示されることがあります。
プラグインの場合は、通常の依存関係とは別にプラグイン用のリポジトリ設定を確認します。
pluginManagement {
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
}
プラグインIDやバージョンが正しいかどうかも確認します。
依存関係の記述方法を確認する
Groovy DSLとKotlin DSLでは、依存関係の記述方法が異なる場合があります。
Kotlin DSLでは、例えば次のように記述します。
dependencies {
implementation("com.example:library:1.0.0")
}
Groovy DSLでは、次のように記述される場合があります。
dependencies {
implementation 'com.example:library:1.0.0'
}
使用している
build.gradle
または
build.gradle.kts
に合った記述方法になっているか確認します。
エラーの「Required by」を確認する
「Could not find」の後に、
Required by
と表示されることがあります。
Could not find com.example:library:1.0.0.
Required by:
project :app
この部分を確認すると、どのモジュールや依存関係が対象のライブラリを必要としているのかを確認できます。
自分で直接追加したライブラリではなく、別のライブラリが間接的に要求している依存関係が原因の場合もあります。
エラー別の確認ポイント
「Could not find」と一緒に表示される内容によって、原因をある程度絞り込むことができます。
| 表示内容 | 主な確認ポイント |
|---|---|
| Could not find ~ | ライブラリ名、バージョン、リポジトリ |
| Searched in the following locations | Gradleが検索したリポジトリ |
| Required by | その依存関係を必要としているモジュール |
| Could not GET | ネットワーク、プロキシ、リポジトリ接続 |
| Connection timed out | ネットワーク、ファイアウォール、プロキシ |
解決しない場合の確認手順
原因が分からない場合は、次の順番で確認すると問題を切り分けやすくなります。
- 「Could not find」の後ろに表示されているライブラリ名を確認する
- group IDとartifact IDに間違いがないか確認する
- 指定しているバージョンが存在するか確認する
google()やmavenCentral()などのリポジトリ設定を確認する- 追加のMaven Repositoryが必要か確認する
- ライブラリの公開先が変更されていないか確認する
- ライブラリの配布が終了していないか確認する
- GradleのOffline modeを確認する
- Gradle Syncを実行する
--refresh-dependenciesで依存関係を再取得する- Version Catalogを使用している場合は
libs.versions.tomlを確認する - プラグインの場合は
pluginManagementのリポジトリ設定を確認する
重要:
「Could not find」は、Gradleが指定された依存関係を検索したものの、見つけられなかったことを示すエラーです。
まずはエラーに表示されているライブラリ名とバージョンを確認し、そのライブラリがどのリポジトリで現在配布されているのかを確認することが重要です。
まとめ
Android Studio Gradleの
「Could not find」
は、指定したライブラリやプラグインなどの依存関係を、Gradleが設定されたリポジトリから見つけられなかった場合に表示されるエラーです。
ライブラリ名やバージョンの指定ミスだけでなく、リポジトリ設定の不足、公開先の変更、配布終了、GradleのOffline modeなどが原因になる場合もあります。
まずは
Could not find
の後ろに表示されている依存関係を確認し、ライブラリ名、バージョン、リポジトリの順に確認すると、原因を効率よく絞り込むことができます。
