Android Studioでアプリをビルドすると、
Execution failed for task ':app:...'
と表示され、ビルドが停止することがあります。
このエラーは、
Gradleが特定のビルドタスクを実行した際に、
そのタスクの処理中に問題が発生したことを示します。
ただし、
Execution failed for task
というメッセージ自体は、
エラーの直接的な原因を示しているとは限りません。
実際の原因は、
その直後や
Caused by:
の後に表示されている内容に記載されていることが多くあります。
原因としては、
KotlinやJavaのコンパイルエラー、
XMLリソースエラー、
Manifestの問題、
依存関係の競合、
DEX変換の失敗、
コード生成エラー、
署名設定、
JavaやGradleのバージョン不一致など、
さまざまなものがあります。
この記事では、
Android Studioで
Execution failed for task
が発生する主な原因と、
Build Outputから本当の原因を確認して解決する方法を順番に解説します。
- Execution failed for taskとは
- 代表的なエラー表示
- まずExecution failed for taskの下にある原因を確認する
- タスク名から原因を絞り込む
- 原因1:Kotlinのコンパイルエラー
- 原因2:Javaのコンパイルエラー
- 原因3:XMLやリソースにエラーがある
- 存在しないリソースを参照していないか確認する
- 原因4:Manifestに問題がある
- 原因5:依存関係が競合している
- Gradleの依存関係を確認する
- 原因6:DEX変換に失敗している
- 原因7:Javaのバージョンが合っていない
- 原因8:GradleやAndroid Gradle Pluginのバージョンに問題がある
- 原因9:コード生成に失敗している
- 原因10:署名設定に問題がある
- 原因11:ファイルやディレクトリへアクセスできない
- 原因12:ディスク容量が不足している
- 原因13:特定のビルドバリアントだけでエラーになる
- 原因14:R8やコード縮小処理で失敗している
- 原因15:Native Libraryの競合がある
- 原因16:Gradle Sync自体が正常に完了していない
- Gradle Syncを実行する
- CleanやRebuildを実行する
- コマンドラインから詳細なログを確認する
- エラーの先頭とCaused byを確認する
- それでもExecution failed for taskが直らない場合
- Execution failed for taskが大量に表示される場合
- まとめ
Execution failed for taskとは
Execution failed for task
は、
Gradleが実行しているビルドタスクのどれかが失敗した場合に表示されるメッセージです。
Androidアプリのビルドでは、
コンパイル、
リソース処理、
Manifestの統合、
DEXへの変換、
APKやAABの生成など、
多数のタスクが順番に実行されます。
そのうちの1つが失敗すると、
次のような形で表示されます。
Execution failed for task ':app:compileDebugKotlin'.
または、
次のように別のタスク名が表示されることもあります。
Execution failed for task ':app:processDebugResources'.
ポイント:
Execution failed for task
はエラーの種類そのものではなく、
「このGradleタスクの実行に失敗した」という結果を示している場合が多くあります。
本当の原因を調べるには、
タスク名と、
その下に表示される詳細なエラーメッセージを確認することが重要です。
代表的なエラー表示
Execution failed for task ':app:compileDebugKotlin'.
Execution failed for task ':app:compileDebugJavaWithJavac'.
Execution failed for task ':app:processDebugResources'.
Execution failed for task ':app:mergeDebugResources'.
Execution failed for task ':app:mergeDebugNativeLibs'.
Execution failed for task ':app:checkDebugDuplicateClasses'.
Execution failed for task ':app:mergeExtDexDebug'.
Execution failed for task ':app:packageDebug'.
タスク名によって、
問題が発生している処理をある程度絞り込むことができます。
まずExecution failed for taskの下にある原因を確認する
このエラーが表示された場合、
Execution failed for task
の1行だけを見て修正方法を判断しないことが重要です。
Build Outputには、
その下により具体的な原因が表示されていることがあります。
Execution failed for task ':app:compileDebugKotlin'.
> Compilation error. See log for more details
また、
次のように
Caused by:
が表示される場合もあります。
Execution failed for task ':app:someTask'.
Caused by: Some specific error message
この場合は、
Some specific error message
に相当する部分が、
実際に修正すべき原因です。
Execution failed for task
が表示されたときは、
Build Outputを上から確認し、
最初に発生している具体的なエラーを探します。
後続のエラーは、
最初のエラーによって連鎖的に発生している場合があります。
タスク名から原因を絞り込む
Execution failed for task
の後に表示されるタスク名を見ると、
どの処理で失敗したのかを判断しやすくなります。
たとえば、
次のようなタスク名があります。
:app:compileDebugKotlin
:app:compileDebugJavaWithJavac
:app:processDebugResources
:app:mergeDebugResources
:app:checkDebugDuplicateClasses
:app:mergeExtDexDebug
:app:packageDebug
compileDebugKotlin
であればKotlinコード、
compileDebugJavaWithJavac
であればJavaコード、
processDebugResources
や
mergeDebugResources
であればリソース関連を優先して確認します。
原因1:Kotlinのコンパイルエラー
次のようなエラーの場合は、
Kotlinコードのコンパイルに失敗しています。
Execution failed for task ':app:compileDebugKotlin'.
この場合、
タスク名だけでは具体的な原因は分かりません。
Build Outputの少し上を確認すると、
Kotlinコンパイラが出力した具体的なエラーが表示されていることがあります。
Unresolved reference: SampleClass
また、
型の不一致、
関数の呼び出し方の誤り、
構文エラーなどが原因になる場合もあります。
この場合は、
Execution failed for task
ではなく、
Kotlinコンパイラが最初に表示しているエラーを修正します。
原因2:Javaのコンパイルエラー
次のようなタスクが失敗している場合は、
Javaコードのコンパイルエラーを確認します。
Execution failed for task ':app:compileDebugJavaWithJavac'.
Javaコードのスペルミス、
クラスやメソッドの参照エラー、
型の不一致、
import不足などが原因になることがあります。
Build Outputに表示されている
error:
の行を確認し、
最初のJavaコンパイルエラーから修正します。
原因3:XMLやリソースにエラーがある
次のようなタスクが失敗している場合は、
XMLやAndroidリソースに問題がある可能性があります。
Execution failed for task ':app:processDebugResources'.
または、
Execution failed for task ':app:mergeDebugResources'.
原因として、
XMLの記述ミス、
存在しないリソースの参照、
リソース名の重複、
不正なファイル名などがあります。
res
フォルダ内のXMLファイルや、
Build Outputに表示されているリソース名を確認します。
存在しないリソースを参照していないか確認する
XMLなどで存在しないリソースを参照している場合、
リソース処理のタスクが失敗することがあります。
@string/sample_text
この場合は、
sample_text
が実際に定義されているか確認します。
<string name="sample_text">Sample</string>
原因4:Manifestに問題がある
AndroidManifest.xmlの統合や処理中に問題が発生すると、
Gradleタスクが失敗することがあります。
Build Outputに
Manifest merger failed
などのメッセージが表示されている場合は、
Manifestの競合や設定ミスを確認します。
Manifest merger failed
この場合は、
Execution failed for task
ではなく、
Manifest mergerの詳細なエラー内容を基準に修正します。
原因5:依存関係が競合している
複数のライブラリに同じクラスが含まれている場合など、
Gradle依存関係の競合によってタスクが失敗することがあります。
次のようなタスク名が表示される場合があります。
Execution failed for task ':app:checkDebugDuplicateClasses'.
詳細には、
次のようなエラーが表示されることがあります。
Duplicate class com.example.SomeClass found in modules ...
この場合は、
重複しているライブラリを確認し、
不要な依存関係を削除するか、
必要に応じて重複する依存関係を除外します。
Gradleの依存関係を確認する
依存関係が原因と考えられる場合は、
Gradleの依存関係ツリーを確認します。
./gradlew app:dependencies
Windowsでは、
次のように実行できます。
gradlew app:dependencies
同じライブラリが複数の経路から追加されていないか、
異なるバージョンが混在していないか確認します。
原因6:DEX変換に失敗している
Androidアプリでは、
コンパイルされたコードをDEX形式へ変換する処理があります。
この処理で問題が発生すると、
次のようなタスクが失敗する場合があります。
Execution failed for task ':app:mergeExtDexDebug'.
原因として、
ライブラリの競合、
重複クラス、
互換性の問題などが考えられます。
詳細なエラーメッセージを確認し、
DEX変換が失敗した原因となっているライブラリやクラスを特定します。
原因7:Javaのバージョンが合っていない
Android Gradle PluginやGradleが要求するJavaのバージョンと、
実際に使用しているJavaのバージョンが合っていない場合、
Gradleタスクが失敗することがあります。
Build Outputに、
Javaのバージョンに関するエラーが表示されていないか確認します。
Android StudioのGradle JDK設定と、
使用しているAndroid Gradle PluginやGradleの組み合わせを確認します。
原因8:GradleやAndroid Gradle Pluginのバージョンに問題がある
Gradle、
Android Gradle Plugin、
Kotlin、
Javaなどのバージョンの組み合わせが互換性を持たない場合、
タスク実行時にエラーになることがあります。
特に、
Android StudioやAndroid Gradle Pluginを更新した直後に
Execution failed for task
が発生した場合は、
バージョンの組み合わせを確認します。
Build Outputに、
必要なGradleやJavaのバージョンが具体的に表示されている場合は、
その内容に合わせて設定を修正します。
原因9:コード生成に失敗している
ライブラリやビルドツールによってコードを自動生成している場合、
生成処理のタスクが失敗することで
Execution failed for task
が表示されることがあります。
この場合は、
タスク名とBuild Outputを確認し、
コード生成処理より前に入力データや設定のエラーがないか確認します。
生成されるクラスが作成されなかった結果、
後続のコンパイルで
Unresolved reference
や
Cannot resolve symbol
が発生する場合もあります。
原因10:署名設定に問題がある
APKやAABを作成する際に、
署名設定に問題があるとパッケージ生成に関するタスクが失敗することがあります。
keystoreのパス、
alias、
パスワード、
signingConfigなどが正しいか確認します。
特にreleaseビルドだけで
Execution failed for task
が発生する場合は、
release用の署名設定を確認します。
原因11:ファイルやディレクトリへアクセスできない
Gradleタスクが必要なファイルを読み込めない場合や、
出力先へ書き込めない場合にもタスクが失敗することがあります。
Build Outputに
Permission denied、
File not found、
Access denied
などのメッセージが表示されていないか確認します。
ファイルパス、
ファイルの存在、
アクセス権限などを確認します。
原因12:ディスク容量が不足している
ビルド時には、
Gradleのキャッシュ、
中間ファイル、
APKやAABなどを保存するための空き容量が必要です。
ディスク容量が不足していると、
ファイルの作成や書き込みに失敗し、
Gradleタスクが停止することがあります。
ストレージの空き容量を確認し、
不足している場合は不要なファイルなどを整理します。
原因13:特定のビルドバリアントだけでエラーになる
debugでは正常にビルドできるのに、
releaseだけで
Execution failed for task
が発生する場合があります。
この場合は、
debugとreleaseで異なる設定を確認します。
src/main/
src/debug/
src/release/
署名設定、
ProGuardやR8、
source set、
buildConfigField、
リソースなど、
ビルドタイプごとに異なる設定が原因になることがあります。
原因14:R8やコード縮小処理で失敗している
releaseビルドでR8などのコード縮小処理を使用している場合、
その処理中にタスクが失敗することがあります。
debugビルドは成功するのにreleaseビルドだけ失敗する場合は、
R8やProGuard関連のエラーがBuild Outputに表示されていないか確認します。
Missing class、
ルール設定、
ライブラリとの互換性など、
詳細なエラーメッセージを基準に修正します。
原因15:Native Libraryの競合がある
JNIやAARなどに含まれるネイティブライブラリが重複している場合、
次のようなタスクが失敗することがあります。
Execution failed for task ':app:mergeDebugNativeLibs'.
同じ
.so
ファイルが複数のライブラリに含まれていないか、
Build Outputの詳細を確認します。
依存関係やパッケージング設定を確認し、
重複しているファイルの原因を特定します。
原因16:Gradle Sync自体が正常に完了していない
Gradle Syncに問題が残った状態でビルドすると、
依存関係やプロジェクト設定が正しく読み込まれず、
ビルドタスクが失敗することがあります。
Gradle Syncでエラーが表示されている場合は、
ビルドエラーより先にSync時の問題を修正します。
Syncが正常に完了したあとで、
再度ビルドを実行します。
Gradle Syncを実行する
build.gradle、
build.gradle.kts、
Version Catalog、
プラグイン設定などを変更した場合は、
Gradle Syncを実行します。
Sync時にエラーが発生した場合は、
その内容を確認して修正します。
CleanやRebuildを実行する
原因となるコードや設定を修正してもエラーが残っている場合は、
古いビルド結果や中間ファイルが影響している可能性があります。
Android Studioの
Build
メニューから、
使用しているAndroid Studioのバージョンで利用可能な
CleanやRebuildに相当する処理を実行します。
その後、
再度ビルドして結果を確認します。
コマンドラインから詳細なログを確認する
Android StudioのBuild Outputだけでは原因が分かりにくい場合は、
Gradleをコマンドラインから実行して詳細を確認できます。
./gradlew assembleDebug --stacktrace
Windowsでは、
次のように実行します。
gradlew assembleDebug --stacktrace
より詳細なログが必要な場合は、
次のようなオプションを使用することもできます。
./gradlew assembleDebug --info
または、
./gradlew assembleDebug --debug
ログの量が増えるため、
通常はまず
--stacktrace
から確認します。
エラーの先頭とCaused byを確認する
長いBuild Outputでは、
Execution failed for task
が複数表示されることがあります。
この場合は、
最初に発生した具体的なエラーと、
Caused by:
の内容を確認します。
後ろに表示されるエラーだけを修正しようとすると、
根本原因を見落とすことがあります。
それでもExecution failed for taskが直らない場合
原因が分からない場合は、
タスク名とBuild Outputを基準に順番に確認します。
Execution failed for taskの後に表示されるタスク名を確認します。- Build Outputで最初に発生している具体的なエラーを確認します。
Caused by:がある場合は、その内容を確認します。- KotlinやJavaのコンパイルエラーがないか確認します。
- XMLやリソースエラーがないか確認します。
- Manifest関連のエラーがないか確認します。
- Gradle依存関係の競合や重複がないか確認します。
- DEX変換関連のエラーがないか確認します。
- Java、Gradle、Android Gradle Pluginのバージョンを確認します。
- コード生成処理が失敗していないか確認します。
- releaseのみの場合は署名設定やR8を確認します。
- Native Libraryを使用している場合は重複を確認します。
- Gradle Syncが正常に完了しているか確認します。
- ファイルアクセスやディスク容量に問題がないか確認します。
- 必要に応じてCleanやRebuildを実行します。
- 原因が分からない場合は
--stacktraceで詳細を確認します。
Execution failed for taskが大量に表示される場合
Build Outputに、
複数の
Execution failed for task
が表示される場合があります。
この場合、
すべてのタスクに別々の問題があるとは限りません。
たとえば、
最初のコンパイルエラーやリソースエラーによって、
後続のタスクが実行できず、
複数のエラーが連鎖して表示されることがあります。
複数の
Execution failed for task
が表示された場合は、
一番下のエラーだけを見るのではなく、
Build Outputの中で最初に発生した具体的なエラーを探すことが重要です。
1つの根本原因を修正することで、
複数のタスクエラーがまとめて解消される場合があります。
まとめ
Android Studioの
Execution failed for task
は、
Gradleが特定のビルドタスクの実行に失敗した場合に表示されます。
ただし、
このメッセージだけでは具体的な原因を特定できないことが多く、
タスク名、
Build Output、
Caused by:
などを確認する必要があります。
主な原因として、
KotlinやJavaのコンパイルエラー、
XMLやリソースエラー、
Manifestの問題、
Gradle依存関係の競合、
DEX変換の失敗、
JavaやGradleのバージョン不一致、
コード生成、
署名設定、
R8、
Native Libraryなどがあります。
複数のタスクエラーが表示されている場合でも、
1つの根本的なビルドエラーから連鎖している可能性があります。
Execution failed for task
を解決するときは、
エラー文そのものではなく、
「どのタスクが失敗したのか」と
「そのタスクがなぜ失敗したのか」を分けて確認することが重要です。
Build Outputの最初の具体的なエラーを確認することで、
原因を絞り込みやすくなります。
