Android Gradleプラグインが見つからない問題の解決法
問題の説明
最新のAndroid Studioで新規プロジェクトを作成した際、次のエラーが発生してビルドできない問題が発生します:
Plugin [id: 'com.android.application', version: '8.0.2', apply: false] not found in any sources
このエラーは、Gradleがcom.android.application
プラグインを正しくダウンロードできなかった場合や、プロジェクト設定に問題がある場合に発生します。新規プロジェクトで頻発する問題で、ソリューションは複数の要因に対処する必要があります。
主な原因
このエラーの背景には以下のような要因が考えられます:
- Gradleとプラグインのバージョン不整合
- ネットワーク接続の問題(プロキシ/VPN)
- 不正な設定ファイル
- JDKバージョンの不一致
- オフラインモードの有効化
解決方法
1. Gradleとプラグインの互換性確認
GradleプラグインバージョンとGradle本体の互換性は非常に重要です。公式互換表で適切なバージョンを選択してください。
Android公式マトリックスを参照:
Android GradleプラグインとGradleの互換性gradle-wrapper.properties
でGradleバージョンを修正:
distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip
- プロジェクトの
build.gradle
でプラグインバージョンを調整:
plugins {
id("com.android.application") version "8.2.0" apply false
}
バージョン指定の注意
バージョン番号は正確に指定する必要があります(例: 8.2
ではなく8.2.0
)。マイナーバージョンの欠落がエラーの原因になるケースが多いです。
2. プロキシ設定の見直し
プロキシ環境下では、Gradleの接続問題が発生する場合があります。以下のいずれかの方法で対処します。
プロキシ設定の削除 (gradle.properties
):
# systemProp.http.proxyHost=your-host
# systemProp.http.proxyPort=8080
またはSocksプロキシの明示的指定:
systemProp.socksProxyHost=127.0.0.1
systemProp.socksProxyPort=2080
3. 設定ファイルの修正
settings.gradle
の構成が最新形式に対応しているか確認します。
pluginManagement {
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
}
}
rootProject.name = "YourProject"
include(":app")
よくある設定ミス
プロジェクトに複数のsettings.gradle
ファイルがある場合、不要なファイルは削除し、ルートの設定ファイルにモジュール情報のみ含めること。例えば、モジュールインクルードは単一ファイルで管理します:
include(":app", ":mylibrary")
4. JDKバージョンの調整
JavaバージョンとGradleの互換性に注意します。
- Android Studio > File > Project Structure
- 「JDK Version」で以下のいずれかを選択:
- JDK 17 (Gradle 8.0+推奨)
- JDK 20(最新版の場合)
- Gradle syncを実行
5. オフラインモードの無効化
誤ってオフラインモードが有効になっていないか確認します:
- Android Studio > File > Settings
- Build, Execution, Deployment > Gradle
- 「Offline work」のチェックを外す
6. キャッシュクリアと依存関係更新
根本的な解決にはキャッシュクリアが有効です:
# Gradleキャッシュの完全削除(プロジェクトディレクトリで実行)
rm -rf ~/.gradle/caches
./gradlew build --refresh-dependencies
地域別ネットワーク制限の対処法
特定の国(例:イラン)ではGoogleサービスへのアクセスが制限される場合があります:
- DNSサービス切替え(ローカルで有効なサービスを利用)
- 信頼できるVPNの使用
- 以下のコマンドで直接アクセス可能かテスト:
# プラグインがアクセス可能か確認
curl https://dl.google.com/dl/android/maven2/com/android/application/com.android.application.gradle.plugin/8.2.0
補足:設定ファイル完全サンプル
build.gradle.kts
(Project):
plugins {
id("com.android.application") version "8.2.0" apply false
id("org.jetbrains.kotlin.android") version "1.9.0" apply false
}
build.gradle.kts
(Module:app):
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
}
android {
namespace = "com.example.app"
compileSdk = 34
defaultConfig {
applicationId = "com.example.app"
minSdk = 24
targetSdk = 34
// ...その他の設定
}
// ...ビルド設定
}
dependencies {
implementation("androidx.core:core-ktx:1.12.0")
// ...追加依存関係
}
根本的な予防策
この問題を再発させないために:
- Android Studioを常に最新版に更新
- Gradleバージョンのアップグレード前に公式互換表を必ず確認
- カスタムDNSやプロキシを使用する場合はテスト環境で事前検証
- プロジェクトに
.gradle
フォルダをコミットしない(常にクリーンな状態で開始)
上記のソリューションを順に適用することで、プラグイン参照エラーは解消されます。ネットワーク環境やプロキシ設定は環境固有の問題となるため、問題別に切り分けることが解決の近道です。