プロジェクトの\drawable
フォルダーに9パッチイメージを追加しようとすると、同じエラーが発生します。
ERROR: 9-patch image C:\...\res\drawable\appwidget.9.png malformed.
Frame pixels must be either solid or transparent (not intermediate alphas).
Found at pixel #3 along top Edge. Failure processing PNG image
C:\...\res\drawable\appwidget.9.png
この例の奇妙な点は、SDKリソースにある「Android-g1-icon」画像からこの画像を取得しているため、それで問題ないことです。これは、これまでに試した9パッチイメージでも同様です。何が間違っているのでしょうか?
Android Studioで同じ問題に遭遇しました:
AAPT out(943142208) : No Delegate set : lost message:Done
AAPT err(943142208): ERROR: 9-patch image /Users/cartman/Github/UteacherAndroid/RefactorDemo/app/src/main/res/drawable-xxhdpi/nav_shabow.9.png malformed.
AAPT err(943142208): Frame pixels must be either solid or transparent (not intermediate alphas).
AAPT err(943142208): Found at pixel #1 along left Edge.
これは私がそれを解決した方法です:Android Sdkディレクトリの下でdraw9patchツールを開きます
cd /Android/sdk/tools
./draw9patch
.9 pngを開き、再度保存します。それが役に立てば幸い。
これは、最新のADT 20.0.3の問題です。代わりに、*。9.pngの名前を* .pngに変更して、作業を開始できます。
これはADTのみのバグだと思います。18.0.0バージョンのADTでは、このタイプのエラーのプロンプトが表示されず、正常に動作するためです。
リソースコンパイラは、9パッチの1ピクセルの境界線を取り除きます(そして、おそらく、それらから得られた情報を.9.pngファイルの外側でより効率的な方法で保存します)。これらの.9.pngファイルを.apkからフィッシングした場合、手作業で境界線を追加し直す必要があります。
EclipseのプロジェクトをAndroid Studioに移行したときに同じ問題が発生しました。
必要なのは、イメージファイル名から.9を削除してから、draw9patchツール(/ sdk/toolsディレクトリにあります)でそれを開き、右上隅の[不良パッチの表示]ボタンをクリックすることです。
その後、赤でマークされた不良ピクセルと領域が表示されるはずです。赤の不良パッチがなくなるまで、そこで作業を行う必要があります。私にとっては、左中央のエッジに1ピクセル、中央上部のエッジに1ピクセルをマークし、ほぼすべての右エッジと下エッジをマークしました。もう一度ボタンをクリックして、悪いパッチがないことを確認します。
ファイルを.9.pngとして保存し、プロジェクトのresフォルダーに戻します。 Androidその後、Studioは9つのパッチイメージに対して問題なくプロジェクトをビルドします。
現在、Androidビルドツール、AAPTおよびJava cruncher。両方の不正な9パッチイメージをチェックします。
ビルドツールのソースコードを調べました。 9パッチイメージの圧縮を無効にするオプションや、不正な形式のイメージを無視するオプションはありません。少なくともユーザーが利用できるオプションはありません。
AAPTを置き換える簡単なスクリプトを次に示します。
https://Gist.github.com/ksc91u/37513796b2cec37bb3c5
9パッチイメージを圧縮するために呼び出されると、ファイルを単純にコピーします。それ以外の場合は、@ ARGVで実際のAAPTを起動します。
私の場合、誤って黒い境界線を左上隅まで広げました。角が透明であることを確認してください。
オンラインジェネレーターツールを使用してイメージを作成している場合、そのイメージを機能させるには、名前から特殊文字を削除する必要があります。
私にとっての問題は、私が自分で9つのパッチを作成したことのようです。左端と上端に1ピクセルの境界線があれば十分だと思いましたが、画像の各エッジに1ピクセルの境界線があることを確認する必要があります。
記録のためだけに:私にとって、このエラーは右側のサイトと下側の黒い境界線に由来することが判明しました。そのため、すべての側面(上、右、下、左)に黒い境界線がありました。冗長な右と下の行を削除することは魅力のように働きました。
あなたの9パッチは間違っている可能性があります。
たぶん、9パッチの1ピクセルの境界を取り除き、そこから得られた情報は利用できません。テキストにも一番下の行と右の行を追加してみてください。問題の解決に役立つと思います。
Android Studioでストレッチスコープを変更することで解決しました。
エラーが発生すると、Android studioでも画像を開きます。これを修正するために行ったのは、パッチの境界線を1つの描画ピクセルで拡張することだけでした。理由はわかりませんが、これを複数の画像で繰り返しテストしました。
画像にパッチを適用すると、境界線に黒い線が作成されます。その境界線は透明または完全に実線でなければなりません。そうでない場合、このエラーが発生します。
そのため、解決策は幅と高さを2ピクセル増やすことです。 (Photoshopでは、画像ではなくキャンバスのサイズを大きくします。)
この問題は* .9.pngファイルに関するものであることがわかりました。すべての9-Patchファイルを開いて確認し、すべてのファイルに1ピクセル幅の黒い境界線があることを確認します。ない場合は、白い場所をクリックして追加し、保存します。
それが私の問題の唯一の解決策です。