Android Studio 3.1.2 新規プロジェクトのエラー AAPT2エラー:詳細はログを確認してください(Gradle 3.1.2)
元々良いプロジェクトだったのですが、ある日突然開いてAAPT2 error: check logsfor detailsというエラーを報告するようになりました。
エラーの詳細を展開する
エラーテキスト
ResourceException: Error: java.util.concurrent.ExecutionException:com.android.builder.internal.aapt. v2.Aapt2Exception: AAPT2 error: check logsfor details
エラー全文
ResourceException: Error: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt. v2.Aapt2Exception: AAPT2 error: check logs for details
at com.android.build.gradle.tasks.MergeResources.doFullTaskAction(MergeResources.java:296)
at com.android.build.gradle.internal.tasks.IncrementalTask.taskAction(IncrementalTask.java:106)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:46)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:121)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor. java:336)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor. java:328)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:110)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:92)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70)
at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:62)
at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java :54)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java :60)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:97)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:87)
at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java: 52)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:248)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor. java:336)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor. java:328)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:241)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:230)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:123)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:79)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:104)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:98)
at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:626)
at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:581)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:98)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
at java.util.c
コードの問題点に関するトラブルシューティング
しばらく調べても問題が見つからなかったので、同じコードとIDE(どちらもAndroid Studio 3.1.2、Ubuntuだけ)で別のパソコンに切り替えたら問題なく動いたので、問題はコードにはないはずなので、新しいプロジェクトを作成して試してみようと思いました。そこで、何の設定も変えずに直接新規プロジェクトを作成し、アクティビティすらない状態で
案の定、作成したばかりのプロジェクトは、Build時に同じエラーを出しました。
ドキュメントを確認すると、一部のユーザーは "問題がある場合は、以前のバージョンに戻り、gradle.properties を開いて以下を追加してください" と述べています。
android.enableAapt2=false
しかし、コードを追加することは可能なので、試したのですが、やはりエラーレポートが表示されました。
エラーメッセージが表示されます。
The option 'android.enableAapt2' isdeprecated and should not be used anymore.
Use 'android.enableAapt2=true' to removethis warning.
It will be removed at the end of 2018.
直訳すると、このような意味です。
オプション "android.enableAapt2"
は非推奨であり、今後使用するべきではありません。
andquot;android.enableAapt2=true" を使用します。
をクリックすると、この警告が表示されなくなります。
で削除されます。
2018
年末に撤去。
明らかに"を使用しています。 android.enableAapt2=false AAPT2をオフにするには、"を使用します。この方法は時代遅れで、オフにした後、Android Studioはオンにするように指示するので、デッドエンドのループに陥っています。
だから、素直に"を削除すればいいのです。 android.enableAapt2=false "の方法を探し続けることです。
エラーメッセージを表示する
いろいろ調べていたら、Android studioで詳細なエラーメッセージを表示する方法を知りました。
コマンドラインからプロジェクトのルートに移動するか、Android studioのTerminalから直接コマンドを打ち込みます。
gradlew compileDebug --stacktrace
さらに詳細な情報を出力し、コマンドラインで与えられたプロンプトに応じて --info または --debug オプションを追加すると、より詳細な情報を得ることができるので、コマンドは以下のように記述することができます。
gradlew compileDebug --stacktrace -info
または
gradlew compileDebug --stacktrace -debug
まず、最初の行のコードを試してみてください
Android Studioに付属のTerminalに入力します。
gradlew compileDebug --stacktrace
<イグ
キャリッジリターンはあまりヒントになりませんが、サジェストの 1 つに "Task 'compileDebug' is ambiguous in root project" (訳注:ルートプロジェクトではコマンド "'compileDebug " はあいまい)があり、前のエラーレポートを振り返ると、最初の行でリソース例外 "ResourceException" に言及しています。
そこで、コマンドを次のように変更してみました。
gradlew compileDebugSources --stacktrace -info
表示された情報をもう一度見てみると、何か発見があったようです。
エラーメッセージ
> Task :app:mergeDebugResources FAILED
Exception while processing job : QueuedJob{
title=Compiling abc_ic_menu_copy_mtrl_am_alpha.png,
task={from=C:\Users\郑维一\.gradle\caches\transforms-1\files-1.1\appcompat-v7-26.1.0.aar\a55ab1e075dbd5b5da002f93c40b9cfb\res\ drawable-xhdpi-v4\abc_ic_menu_copy_mtrl_am_alpha.png, to=F:\Projects\AndroidStudioProjects\JinchengNewsAndroid\app\build\ intermediates\res\merged\debug},
future=com.google.common.util.concurrent.SettableFuture@4d8f81a6} : com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details
Exception while processing job : QueuedJob{
title=Compiling abc_btn_radio_to_on_mtrl_000.png,
task={from=C:\Users\Zheng Wei Yi\.gradle\caches\transforms-1\files-1.1\appcompat-v7-26.1.0.aar\a55ab1e075dbd5b5da002f93c40b9cfb\res\ drawable-hdpi-v4\abc_btn_radio_to_on_mtrl_000.png, to=F:\Projects\AndroidStudioProjects\JinchengNewsAndroid\app\build\intermediates \res\merged\debug},
future=com.google.common.util.concurrent.SettableFuture@6d94b091} : com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details
Exception while processing job : QueuedJob{
title=Compiling notify_panel_notification_icon_bg.png,
task={from=C:\Users\ZhengWeiYi\.gradle\caches\transforms-1\files-1.1\support-compat-26.1.0.aar\2efeba8952eb2c0e463a57b63c49f99f\res\ drawable-xhdpi-v4\notify_panel_notification_icon_bg.png, to=F:\Projects\AndroidStudioProjects\JinchengNewsAndroid\app\build\ intermediates\res\merged\debug},
future=com.google.common.util.concurrent.SettableFuture@19e643ef} : com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details
Shutdown finished in 244ms
Error: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details
:app:mergeDebugResources (Thread[Task worker for ':' Thread 3,5,main]) completed. took 5.716 secs.
中国語発見!
何かおかしいぞ!」と敏感に反応。(くだらない、実はお兄ちゃんに相談した)
問題の根源
"この現在の非アスキーIIは確かにAAPT2とGradleプラグインのバグだと誰かが言っていたが、今は修正されている、ただAndroid Studioがこの修正バージョンにアップデートされていないだけだ"(大御所が言ったこと、ソースはまだ確認してない)。
ソリューション
ということで、今、2つの解決策があります。
一つは、gradleのキャッシュディレクトリを修正すること
これは、android studioの設定からgradleを見つけて、中国語ではない別のディレクトリをキャッシュするように設定することで実現できます。
File -> Settings -> Build, Execution,Deployment -> Gradle
このページに移動して、"Service directory path"の項目を見つけて、中のパスを中国語以外のパスに変更します。
ビルドがうまくいきました!
2つ目は、あなたのプロジェクトが新しいgradleプラグインを使用するように指定することです。
build.gradle(Project) の Gradle のバージョンを 3.2.0-alpha11 以降に変更するだけです。
repositories {
google()
...
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.0-alpha11'
}
}
最後に、開発プログラムには中国語のディレクトリを使用しないよう注意してください。
関連
-
AndroidStudioのエラーAAPT2エラーの解決:詳細のログを確認する
-
アンドロイド アルメアビ アルメアビ-v7a
-
Dalvik仮想マシンと学習プランの簡単な紹介
-
Error:タスク ':app:compileDebugJavaWithJavac' の実行に失敗しました。解決方法
-
android:ems="10 "の意味。
-
アンドロイドプログレスバー自定义
-
Android用ニュースアプリの簡単な実装です。
-
Androidにおける縦の点線
-
Android Studio がエラーを報告します。指定された名前に一致するリソースが見つかりませんでした
-
SQLiteReadOnlyDatabaseException: 読み取り専用のデータベースを書き込もうとした (コード 1032)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Android Studioの解決策:xxxは囲むクラスではありませんエラー
-
Rは変数に解決できない
-
エラーの報告です。ArrayAdapter は、リソース ID が TextView である必要があります。
-
ArrayAdapter のソリューションでは、リソース ID が TextView である必要があります。
-
指定された子にはすでに親がいます。まず、その子の親に対して removeView() をコールする必要があります。
-
パッケージが見つからないエラー 解決策と jdk の切り替え
-
appの実行エラー:ターゲットデバイスが見つかりませんでした。
-
Android デフォルトのホームアプリケーション(Launcher)起動プロセスのソースコード解析
-
AndroidManifest.xml の use-sdk 警告メソッドを削除する。
-
AndroidManifestのuses-permissionの設定