9patchのリソースを幾つか追加したところ、次のエラーが出力されアプリがビルド出来なくなってしまいました。
Error:found an invalid color.
Error:Execution failed for task ':app:mergeDebugResources'.
> Error: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
ぐぐるとAAPT2を無効にする方法が出てきましたが、AAPT2を無効にしても解決しませんでした。
今回は追加したのが9patchだったので画像の問題の可能性が高いと思い、更に調べていたところ、aapt
コマンドで9patchのバリデーションが可能な事がわかりました。全ファイルバリデートして不正なファイルを除いたところ正常にビルドできるようになりました。
以下にaaptコマンドを使い方をまとめます。
9patchをバリデートする
バリデートするには以下のコマンドを実行します。
aapt s -i hoge.9.png -o /dev/null
正常な場合は結果は次のようになります。
Crunching single PNG file: hoge.9.png
Output file: /dev/null
不正な場合には次のように何がわるいのか説明してくれます。
Crunching single PNG file: hoge.9.png
Output file: /dev/null
ERROR: 9-patch image hoge.9.png malformed.
Frame pixels must be either solid or transparent (not intermediate alphas).
Found at pixel #267 along bottom edge.
今回は下のエッジに何故か1ピクセルだけ少し透過されたブラックが混じっていたことが原因でした。
aaptコマンドのパス
今回の環境では build-tools/27.0.1/aapt
にありました。