2015年11月20日金曜日

9-patch image Validation

作成された(納品された)素材の 9-Patch PNG は、壊れていることが多い。

壊れているとビルドができません。
-----------------------------------------------------------------------------------------------------
/hogeproject/res/drawable-mdpi/btn_on.9.png
Error:No marked region found along edge.
       Found along left edge.
/hogeproject/res/drawable-xxhdpi/btn_on.9.png
Error:No marked region found along edge.
Error:Error: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/android-sdk/build-tools/21.1.2/aapt'' finished with non-zero exit value 42
:beetv:mergeDmyDebugResources FAILED
Error:Execution failed for task ':hogeproject:mergeDmyDebugResources'.

> /hogeproject/res/drawable-xxhdpi/btn_on.9.png: Error: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Applications/android-sdk/build-tools/21.1.2/aapt'' finished with non-zero exit value 42
Information:BUILD FAILED
-----------------------------------------------------------------------------------------------------

ビルドができなくなると開発に支障をきたすので、プロジェクトに取り込む前に検査を行い、エラーがある場合は作成元へフィードバックする。

aapt コマンドで精査することができます。

-----------------------------------------------------------------------------------------------------
$ aapt
...
 aapt c[runch] [-v] -S resource-sources ... -C output-folder ...
   Do PNG preprocessing on one or several resource folders
   and store the results in the output folder.

 aapt s[ingleCrunch] [-v] -i input-file -o outputfile
   Do PNG preprocessing on a single file.

...
-----------------------------------------------------------------------------------------------------

$ aapt c -S res -C /var/tmp
Crunching PNG Files in source dir: res
To destination dir: /var/tmp
ERROR: 9-patch image res/drawable-hdpi/btn_off.9.png malformed.
       No marked region found along edge.
       Found along left edge.
ERROR: 9-patch image res/drawable-hdpi/btn_on.9.png malformed.
       No marked region found along edge.
       Found along left edge.

壊れているファイルはERRORが発生します。

このテキストを作成元へ送りつけましょう...