web-dev-qa-db-ja.com

aapt2の使用方法、ドキュメントはどこにありますか?

aapt pを使用してリソースをパッケージ化し、R.Javaを生成しました。

しかし、Android 24にアップグレードしたとき、aapt2.exeが見つかりました。

aapt2.exeを使用する必要がありますか?どうやって使うの?私はそれに関するドキュメントを見つけることができませんでした。

16
chenie

AAPTとAAPT2の動作には大きな違いがあります。

コンパイルとリンク

AAPT2の背後にある主なアイデアは、新機能を除いて、「パッケージ」ステップを「コンパイル」と「リンク」の2つに分割することです。 1つのファイルのみが変更された場合、その1つのファイルを再コンパイルし、すべての中間ファイルを「link」コマンドでリンクするだけで済むため、パフォーマンスが向上します。

より制限的

AAPT2は、ほとんどのバグをできるだけ早くキャッ​​チしようとします。そのため、AAPTからAAPT2に切り替えると、一部の要素が正しくネストされていないか、一部の参照が正しくないことを示す多くのエラーが発生する場合があります。新しい制限の詳細については、 Android Studio 3.0ドキュメント をご覧ください。

使用法

Android Studio 3.0には、デフォルトでAAPT2が有効になっています(Android Gradle Plugin 3.0.0))。ただし、独自のスクリプトでAAPT2を使用する場合は、処理方法を変更する必要がありますリソース:AAPTを使用した「パッケージ」コマンドの場合、-Sを使用してリソースディレクトリを渡します。AAPT2を使用する場合は、最初に「compileコマンドを使用して各リソースをコンパイルし、次に-Rフラグを付けてすべてのコンパイル済みファイルを渡します」.
例えば:

aapt package -S app/src/main/res/ ...

代わりに使用します:

aapt2 compile -o compiled/res/ app/src/main/res/values/values.xml
aapt2 compile -o compiled/res/ app/src/main/res/drawable/myImage.png --no-crunch
...
aapt2 link -R compiled/res/values_values.arsc.flat -R compiled/res/drawable_myImage.flat ...

フラグの使用にはさらに違いがあります。たとえば、「-pseudo-localize」フラグと「--no-crunch」フラグの両方が、「コンパイル」ステップ中にファイルごとに使用されます。 AAPT2フラグの詳細については、次を入力してください。

aapt2 compile -h
aapt2 link -h
24

注:これをイザベラの答えへの追加として扱います

これは(2018年2月現在)文書化されていません。 Android Oは最近彼らの作品を発表し、AAPT2について話します スライドで (コンテキストについてはスライド12-14を参照)のOverlay Manager Serviceの作成者。

また、疑問がある場合は、ソースコードを参照してください: https://Android.googlesource.com/platform/frameworks/base/+/Android-7.0.0_r7/tools/aapt2

8
scorpiodawg

上記の回答に加えて、AAPT2のドキュメントが最終的に公開されました。ドキュメントを見つけることができます こちら 。エラーを見つけた場合は、それらのエラーに対して バグを報告 してください。

2