コンパイルエラー処理

5426 ワード

1.エラーメッセージのコンパイル
Caused by: Error: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details
at com.android.ide.common.res2.MergedResourceWriter.end(MergedResourceWriter.java:332)
at com.android.ide.common.res2.DataMerger.mergeData(DataMerger.java:301)
at com.android.ide.common.res2.ResourceMerger.mergeData(ResourceMerger.java:412)
at com.android.build.gradle.tasks.MergeResources.doIncrementalTaskAction(MergeResources.java:381)

はい、探さなくてもいいです.役に立つ情報は上の点です.何?プロジェクトのどのファイルのどの行のコードのどの文字に何の間違いがあるか教えてくれないの?gradleコンパイラ:私は小さな青龍で、私は多くの小さな秘密を持っていて、あなたに教えないで、あなたに教えません!
ログに印刷されたAAPT 2 error:check logs for detailsという文を見てみましょう.このAAPT 2の1つの機能はandroid gradleと協力してリソースの標準性を検出することです.このエラーは基本的にプロジェクトのあるリソースに問題があり、画像に問題がある可能性が高いです.例えば、1つです.png接尾辞名のピクチャは実際にはpngピクチャではなく、である.jpgの、このAAPTは間違いを報告して、しかもここであなたにどの画像が間違っているかを教えないで、私はネット上で探して、基本的にgradleの配置を古いバージョンに変えることを提案して、つまりgradle.propertiesにこの言葉を加えます.
android.enableAapt2=false

コードの字面の意味を見て、これはgradleコンパイル検査資源の機能をオフにしたことを知っていて、私はこの時あなたの心の中で前後して2つの考えが現れると思います:考え1:もとはこのように設定することができて、幸いにもオフの検査を設定することができて、やっと解決方法を見つけて、急いで試してみます;アイデア2:このように直接問題を消して解決する可能性がありますが、根本的な問題を解決していません.後でgradleをアップグレードしてから、資源を強制的に検出したらどうしますか.
また強迫症のある人はどうするのか、潜在的に危険な資源がプロジェクトに残ることは絶対に許されないよ.okはAAPT 2 error:check logs for details、android studioのterminal、またはwindosコマンドラインで本プロジェクトのルートディレクトリに入ってgradleコンパイルコマンドを実行するようにヒントを与える.
gradlew compileDebug --stacktrace

コンパイルエラー、次のヒントを見てください
* Try:
Run gradlew tasks to get a list of available tasks. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

次のコマンドを実行して詳細を出力します.
gradlew compileDebug --info

次の情報を見つけます
Initialized native services in: C:\Users\Administrator\.gradle
ative The client will now receive all logging from the daemon (pid: 2608). The daemon log file: C:\Users\Administrator\.gradle\daemon\4.4\daemon-2608.out.log

daemon-2608.out.logこのファイルは詳細なコンパイル情報です.開いてみてください.
:app:generateDebugBuildConfig UP-TO-DATE
:app:prepareLintJar UP-TO-DATE
:app:mainApkListPersistenceDebug UP-TO-DATE
:app:generateDebugResValues UP-TO-DATE
:app:generateDebugResources UP-TO-DATE
:app:mergeDebugResourcesAAPT err(Facade for 101062891): ERROR: 9-patch image \\?\G:\github\Vod_ott\app\src\main\res\drawable-hdpi\call_gray.9.png malformed.
AAPT err(Facade for 14478131): ERROR: 9-patch image \\?\G:\github\Vod_ott\app\src\main\res\drawable-hdpi\local_bg.9.png malformed.
AAPT err(Facade for 14478131):        Frame pixels must be either solid or transparent (not intermediate alphas).
AAPT err(Facade for 14478131):        Found at pixel #14 along top edge.
AAPT err(Facade for 412895172): ERROR: 9-patch image \\?\G:\github\Vod_ott\app\src\main\res\drawable-hdpi\btn_normal.9.png malformed.
AAPT err(Facade for 101062891):        Frame pixels must be either solid or transparent (not intermediate alphas).
AAPT err(Facade for 412895172):        Frame pixels must be either solid or transparent (not intermediate alphas).
AAPT err(Facade for 101062891):        Found at pixel #31 along top edge.
AAPT err(Facade for 412895172):        Found at pixel #4 along top edge.

Error: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT error: check logs for details
:app:mergeDebugResources FAILED

FAILURE: Build failed with an exception.

わかりましたdrawable-hdpiフォルダのcall_ですgray.9.png,local_bg.9.pngとbtn_normal.9.pngこの3つのネズミの糞がやったのに、found an invalid colorを提示して、UIを探して図を変えて、画像を変えて、やはり問題が解決しました.
待って、誰かがこのような方法で操作したのではないでしょうか.そして、詳細なロゴファイルの中で長い間探していました.目が大きくなったのか、それとも具体的なエラー情報が見つからなかったのか、驚くべき秘密を教えてあげました.さっきあなたに顧みられなかったandroidです.enableAapt 2=falseは実はとても役に立ち、gradleバージョンが3.0以上であれば、デフォルトでAAPT 2をオンにします.この禁止構成を追加しないと、AAPT 2を使って検出しますが、AAPT 2はログにエラー情報を印刷しないので、本当に穴があいています.この場合、この行の構成を追加しなければなりません.加えてgradleはAAPTの第1版でリソースを検出しますが、エラーが発生します.
Error: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT error: check logs for details

以前のAAPT 2からAAPTになったので、この行を加えてもすべてのエラーを解決できるとは限らない.この画像資源が古すぎて、AAPTの第1バージョンの検出さえできないのだろうか.(具体的な原因を探さずに構成を変更して根本的な解決をしたいですか?あなたが使わないはずの道を指して、eclipseで実行して、これはあなたの資源を検出しません)
この时、上记の详しいlogログを见る操作を実行して、Logファイルを见ると具体的な情报があります.つまり、AAPTの第1バージョンのコンパイルで具体的なエラーファイルが印刷されます.AAPT 2にログスイッチがあるかバグがあるかどうか分かりません.
2.エラーメッセージのコンパイル
Process 'command 'E:\android\Android_SDK_64\build-tools\27.0.3\aidl.exe'' finished with non-zero exit value 1

また具体的な原因を言わないで、それでは更に詳しい情報を見に行きます
:app:compileDebugAidlaidl.exe E 05-21 17:48:18 12260 12700 aidl.cpp:580] refusing to generate code from aidl file defining parcelable

G:\github\Vod_ott\app\src\main\aidl\com\android\internal\ITelephony.aidl:30 interface ITelephony should be declared in a file called com\android\internal\telephony\ITelephony.aidl.
aidl.exe E 05-21 17:48:18  8080 14340 aidl.cpp:588] Invalid package declaration 'com.android.internal.telephony'

 FAILED

FAILURE: Build failed with an exception.

これはAAPTの間違いではないので、AAPTバージョンとは関係ありません.2用1は禁止されていません.ログ情報から分かりやすいのはITelephonyのためです.aidlこのaidlファイルのパッケージが間違っています
ファイルの場所が間違っているのは明らかだaidlはtelephonyに移動し、コンパイルして実行し、順調にインストールします.