How to fix file android_asset www lỗi

AAPT2 (Công cụ đóng gói tài nguyên Android) là một công cụ bản dựng mà Android Studio và Trình bổ trợ Android cho Gradle sử dụng để biên dịch và đóng gói các tài nguyên của ứng dụng. AAPT2 phân tích cú pháp, lập chỉ mục và biên dịch các tài nguyên thành định dạng nhị phân được tối ưu hoá cho nền tảng Android.

Trình bổ trợ Android cho Gradle 3.0.0 trở lên sẽ bật AAPT2 theo mặc định. Thường thì bạn không cần phải tự gọi

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

6. Tuy nhiên, nếu bạn muốn sử dụng thiết bị đầu cuối và hệ thống xây dựng của riêng mình qua Android Studio, bạn có thể sử dụng AAPT2 từ dòng lệnh. Bạn cũng có thể gỡ lỗi bản dựng có liên quan đến AAPT2 từ dòng lệnh. Để thực hiện việc này, bạn có thể tìm AAPT2 dưới dạng công cụ độc lập trong Bộ công cụ bản dựng SDK Android phiên bản 26.0.2 trở lên.

Để tải xuống Bộ công cụ bản dựng SDK Android từ dòng lệnh, hãy sử dụng

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

7 và chạy lệnh sau:

sdkmanager "build-tools;build-tools-version"

Sau khi đã tải Bộ công cụ bản dựng SDK xuống, hãy tìm AAPT2 trong

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

8.

Vì các bản sửa đổi của Bộ công cụ bản dựng SDK Android không được phát hành thường xuyên, nên phiên bản AAPT2 đi kèm trong Bộ công cụ bản dựng SDK của bạn có thể không phải là phiên bản mới nhất. Để tải phiên bản AAPT2 mới nhất, hãy đọc bài viết .

Để sử dụng AAPT2 từ dòng lệnh trên Linux hoặc Mac, hãy chạy lệnh

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

6. Trên Windows, hãy chạy lệnh

aapt2 link path-to-input-files [options] -o outputdirectory/outputfilename.apk --manifest AndroidManifest.xml

0.

AAPT2 có tính năng biên dịch gia tăng giúp hỗ trợ biên dịch tài nguyên nhanh hơn. Để hoàn thành việc biên dịch gia tăng, quá trình xử lý tài nguyên sẽ được tách thành hai bước:

  • : biên dịch các tệp tài nguyên thành định dạng nhị phân.
  • : hợp nhất tất cả tệp đã biên dịch và đóng gói thành một gói duy nhất.

Cách phân chia này giúp cải thiện hiệu suất cho các bản dựng gia tăng. Ví dụ: nếu có thay đổi trong một tệp, bạn chỉ cần biên dịch lại tệp đó.

Tải AAPT2 xuống từ Google Maven

Để tải phiên bản AAPT2 mới nhất chưa được đóng gói trong bộ công cụ xây dựng, bạn có thể tải AAPT2 xuống từ Kho lưu trữ Maven của Google như sau:

  1. Trong phần chỉ mục kho lưu trữ, hãy chuyển đến com.android.tools.build > aapt2.
  2. Sao chép tên của phiên bản AAPT2 mới nhất.
  3. Chèn tên phiên bản bạn vừa sao chép vào URL sau và chỉ định hệ điều hành đích: https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2/aapt2-version/aapt2-aapt2-version- [windows | linux | osx].jar Ví dụ: để tải phiên bản 3.2.0-alpha18-4804415 cho Windows, bạn hãy sử dụng: https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2/3.2.0-alpha18-4804415/aapt2-3.2.0-alpha18-4804415-windows.jar
  4. Di chuyển đến URL trong trình duyệt—AAPT2 sẽ bắt đầu tải xuống trong chốc lát.
  5. Mở gói tệp JAR bạn vừa tải xuống. Tệp JAR phải chứa tệp thực thi aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/ 6 và một số thư viện mà tệp thực thi phụ thuộc.

Biên dịch

AAPT2 hỗ trợ việc biên dịch tất cả các loại tài nguyên Android, chẳng hạn như các tệp XML và đối tượng có thể vẽ. Khi bạn gọi AAPT2 để biên dịch, hãy chuyển một tệp tài nguyên dưới dạng dữ liệu đầu vào cho mỗi lệnh gọi. Sau đó, AAPT2 sẽ phân tích cú pháp tệp và tạo tệp nhị phân trung gian có phần mở rộng

aapt2 link path-to-input-files [options] -o outputdirectory/outputfilename.apk --manifest AndroidManifest.xml

2.

Khi chuyển toàn bộ thư mục, AAPT2 sẽ biên dịch lại tất cả tệp trong thư mục ngay cả khi chỉ có một tài nguyên thay đổi. Mặc dù bạn có thể chuyển các thư mục tài nguyên chứa nhiều tệp tài nguyên cho AAPT2 bằng cách sử dụng cờ

aapt2 link path-to-input-files [options] -o outputdirectory/outputfilename.apk --manifest AndroidManifest.xml

3, nhưng làm như vậy sẽ không tận dụng được lợi ích của việc biên dịch tài nguyên gia tăng theo cách này.

Các loại tệp đầu ra có thể khác nhau tuỳ theo dữ liệu đầu vào mà bạn cung cấp để biên dịch, như trình bày trong bảng sau:

Bảng 1. Loại tệp đầu vào và đầu ra để biên dịch

Đầu vào Đầu ra Các tệp tài nguyên XML, chẳng hạn như Chuỗi và Kiểu, nằm trong thư mục

aapt2 link path-to-input-files [options] -o outputdirectory/outputfilename.apk --manifest AndroidManifest.xml

4 Bảng tài nguyên với phần mở rộng

aapt2 link path-to-input-files [options] -o outputdirectory/outputfilename.apk --manifest AndroidManifest.xml

5. Tất cả tệp tài nguyên khác.

Tất cả tệp không phải là các tệp trong thư mục

aapt2 link path-to-input-files [options] -o outputdirectory/outputfilename.apk --manifest AndroidManifest.xml

4 đều được chuyển đổi thành các tệp XML nhị phân có phần mở rộng

aapt2 link path-to-input-files [options] -o outputdirectory/outputfilename.apk --manifest AndroidManifest.xml

7.

Ngoài ra, tất cả tệp PNG đều được giảm kích thước theo mặc định và sử dụng phần mở rộng

aapt2 link path-to-input-files [options] -o outputdirectory/outputfilename.apk --manifest AndroidManifest.xml

8. Nếu chọn không nén tệp PNG, bạn có thể dùng tuỳ chọn

aapt2 link path-to-input-files [options] -o outputdirectory/outputfilename.apk --manifest AndroidManifest.xml

9 trong quá trình biên dịch.

Các tệp đầu ra AAPT2 là tệp không thể thực thi, sau đó bạn phải đưa các tệp nhị phân này vào làm đầu vào trong giai đoạn liên kết để tạo tệp APK. Tuy nhiên, tệp APK được tạo không phải là tệp thực thi mà bạn có thể triển khai trên thiết bị Android ngay lập tức, vì tệp này không chứa các tệp DEX (mã byte biên dịch) và chưa được ký.

Cú pháp biên dịch

Cú pháp chung để sử dụng

aapt2 link -o output.apk -I android_sdk/platforms/android_version/android.jar

compiled/res/values_values.arsc.flat
compiled/res/drawable_Image.flat --manifest /path/to/AndroidManifest.xml -v
0 như sau:

aapt2 compile path-to-input-files [options] -o output-directory/

Trong ví dụ sau, AAPT2 biên dịch riêng lẻ các tệp tài nguyên có tên

aapt2 link -o output.apk -I android_sdk/platforms/android_version/android.jar

compiled/res/values_values.arsc.flat
compiled/res/drawable_Image.flat --manifest /path/to/AndroidManifest.xml -v
1 và

aapt2 link -o output.apk -I android_sdk/platforms/android_version/android.jar

compiled/res/values_values.arsc.flat
compiled/res/drawable_Image.flat --manifest /path/to/AndroidManifest.xml -v
2:

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

Như trình bày trong bảng 1, tên của tệp đầu ra phụ thuộc vào tên tệp đầu vào và tên của thư mục mẹ.

Trong ví dụ trước, trong đó tệp

aapt2 link -o output.apk -I android_sdk/platforms/android_version/android.jar

compiled/res/values_values.arsc.flat
compiled/res/drawable_Image.flat --manifest /path/to/AndroidManifest.xml -v
3 làm dữ liệu đầu vào,

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

6 sẽ tự động đặt tên tệp đầu ra là

aapt2 link -o output.apk -I android_sdk/platforms/android_version/android.jar

compiled/res/values_values.arsc.flat
compiled/res/drawable_Image.flat --manifest /path/to/AndroidManifest.xml -v
5. Tuy nhiên, tệp đối tượng có thể vẽ đã biên dịch lưu trữ trong thư mục đối tượng có thể vẽ có tên là

aapt2 link -o output.apk -I android_sdk/platforms/android_version/android.jar

compiled/res/values_values.arsc.flat
compiled/res/drawable_Image.flat --manifest /path/to/AndroidManifest.xml -v
6.

Tuỳ chọn biên dịch

Có một số tuỳ chọn mà bạn có thể sử dụng cùng với lệnh

aapt2 link -o output.apk -I android_sdk/platforms/android_version/android.jar

compiled/res/values_values.arsc.flat
compiled/res/drawable_Image.flat --manifest /path/to/AndroidManifest.xml -v
0, như được cho thấy trong bảng 2:

Bảng 2. Tuỳ chọn lệnh biên dịch

Tuỳ chọn Mô tả

aapt2 link -o output.apk -I android_sdk/platforms/android_version/android.jar

compiled/res/values_values.arsc.flat
compiled/res/drawable_Image.flat --manifest /path/to/AndroidManifest.xml -v
8

Chỉ định đường dẫn đầu ra cho tài nguyên đã biên dịch.

Cờ này là bắt buộc vì bạn phải chỉ định đường dẫn đến một thư mục mà AAPT2 có thể xuất và lưu trữ các tài nguyên đã biên dịch.

aapt2 link -o output.apk -I android_sdk/platforms/android_version/android.jar

compiled/res/values_values.arsc.flat
compiled/res/drawable_Image.flat --manifest /path/to/AndroidManifest.xml -v
9

Chỉ định thư mục để quét tài nguyên.

Mặc dù bạn có thể sử dụng cờ này để biên dịch nhiều tệp tài nguyên bằng một lệnh, nhưng phương thức này sẽ vô hiệu hoá lợi ích của quá trình biên dịch gia tăng. Do đó, bạn không nên dùng cờ này đối với các dự án lớn.

aapt2 dump sub-command filename.apk [options]

0 Tạo phiên bản giả lập của các chuỗi mặc định (ví dụ:

aapt2 dump sub-command filename.apk [options]

1 và

aapt2 dump sub-command filename.apk [options]

2).

aapt2 link path-to-input-files [options] -o outputdirectory/outputfilename.apk --manifest AndroidManifest.xml

9 Tắt tính năng xử lý PNG.

Hãy sử dụng tuỳ chọn này nếu bạn đã xử lý tệp PNG hoặc đang tạo bản gỡ lỗi không yêu cầu giảm kích thước tệp. Nếu bật tuỳ chọn này thì quá trình thực thi sẽ diễn ra nhanh hơn, nhưng sẽ tăng kích thước tệp đầu ra.

aapt2 dump sub-command filename.apk [options]

4 Các lỗi được cho phép trong các phiên bản AAPT trước đó hiện được xử lý thành cảnh báo.

Bạn nên sử dụng cờ này cho các lỗi biên dịch không mong muốn. Để giải quyết các thay đổi về hành vi đã biết có thể xảy ra khi sử dụng AAPT2, hãy đọc bài viết .

aapt2 dump sub-command filename.apk [options]

5 file là một tệp ZIP chứa thư mục

aapt2 dump sub-command filename.apk [options]

6 để quét tài nguyên.

aapt2 dump sub-command filename.apk [options]

7 Tạo một tệp văn bản chứa các ký hiệu tài nguyên của lớp R trong tệp được chỉ định.

aapt2 dump sub-command filename.apk [options]

8 Nếu được chỉ định, hãy áp dụng cùng một quy tắc hiển thị cho các thành phần có thể định kiểu (styleable) được dùng cho mọi tài nguyên khác. Nếu không, tất cả thành phần có thể định kiểu sẽ được thiết lập là công khai.

aapt2 dump sub-command filename.apk [options]

9 Thiết lập chế độ hiển thị của các tài nguyên đã biên dịch thành cấp được chỉ định.

aapt2 dump resources output.apk

0 Tạo một mảnh dấu vết JSON

aapt2 dump resources output.apk

1 cho thư mục được chỉ định.

aapt2 dump resources output.apk

2 Thiết lập đường dẫn tệp nguồn của tệp tài nguyên được biên dịch thành path.

aapt2 dump resources output.apk

3 Hiện các công cụ trợ giúp.

aapt2 dump resources output.apk

4 Bật tính năng ghi nhật ký chi tiết.

Liên kết

Trong giai đoạn liên kết, AAPT2 hợp nhất tất cả tệp trung gian mà giai đoạn biên dịch tạo ra, chẳng hạn như bảng tài nguyên, tệp XML nhị phân và tệp PNG đã xử lý, sau đó đóng gói các tệp này thành một tệp APK duy nhất. Ngoài ra, các tệp phụ khác, chẳng hạn như tệp quy tắc

aapt2 dump resources output.apk

5 và ProGuard có thể được tạo trong giai đoạn này. Tuy nhiên, tệp APK đã tạo không chứa mã byte DEX và chưa được ký. Bạn không thể triển khai tệp APK này cho một thiết bị.

Nếu không dùng Trình bổ trợ Android cho Gradle để tạo bản dựng ứng dụng từ dòng lệnh, bạn có thể dùng các công cụ dòng lệnh khác, chẳng hạn như d8 để biên dịch mã byte Java thành mã byte DEX và apksigner để ký tệp APK của mình.

Cú pháp liên kết

Cú pháp chung để sử dụng

aapt2 dump resources output.apk

6 như sau:

aapt2 link path-to-input-files [options] -o outputdirectory/outputfilename.apk --manifest AndroidManifest.xml

Trong ví dụ sau, AAPT2 hợp nhất hai tệp trung gian là

aapt2 dump resources output.apk

7 và

aapt2 dump resources output.apk

8 với tệp

aapt2 dump resources output.apk

9. AAPT2 liên kết kết quả với tệp

aapt2 diff first.apk second.apk

0 chứa các tài nguyên được xác định trong gói

aapt2 diff first.apk second.apk

1:

aapt2 link -o output.apk -I android_sdk/platforms/android_version/android.jar

compiled/res/values_values.arsc.flat
compiled/res/drawable_Image.flat --manifest /path/to/AndroidManifest.xml -v

Tuỳ chọn liên kết

Bạn có thể dùng các tuỳ chọn sau với lệnh

aapt2 dump resources output.apk

6:

Bảng 3. Tuỳ chọn lệnh liên kết

Tuỳ chọn Mô tả

aapt2 link -o output.apk -I android_sdk/platforms/android_version/android.jar

compiled/res/values_values.arsc.flat
compiled/res/drawable_Image.flat --manifest /path/to/AndroidManifest.xml -v
8

Chỉ định đường dẫn đầu ra cho tệp APK tài nguyên đã liên kết.

Cờ này là bắt buộc vì bạn phải chỉ định đường dẫn cho tệp APK đầu ra có thể chứa các tài nguyên đã liên kết.

aapt2 diff first.apk second.apk

4

Chỉ định đường dẫn tới tệp kê khai Android để tạo bản dựng.

Cờ này là bắt buộc vì tệp kê khai cung cấp các thông tin quan trọng về ứng dụng của bạn như tên gói và mã ứng dụng.

aapt2 diff first.apk second.apk

5

Cung cấp đường dẫn đến

aapt2 diff first.apk second.apk

0 của nền tảng hoặc các tệp APK khác như

aapt2 diff first.apk second.apk

7 (có thể hữu ích trong khi xây dựng các tính năng).

Cờ này là bắt buộc nếu bạn đang sử dụng các thuộc tính có không gian tên

aapt2 diff first.apk second.apk

1 trong các tệp tài nguyên.

aapt2 diff first.apk second.apk

9 Chỉ định một thư mục tài sản cần đưa vào tệp APK.

Bạn có thể sử dụng thư mục này để lưu trữ các tệp gốc chưa xử lý. Hãy đọc bài viết để tìm hiểu thêm.

aapt2 optimize options file[,file[..]]

0 Chuyển một tệp

aapt2 link path-to-input-files [options] -o outputdirectory/outputfilename.apk --manifest AndroidManifest.xml

2 riêng lẻ cho

aapt2 dump resources output.apk

6, sử dụng ngữ nghĩa

aapt2 optimize options file[,file[..]]

3 mà không cần sử dụng thẻ

aapt2 optimize options file[,file[..]]

4.

Khi bạn cung cấp một tệp tài nguyên phủ lên một tệp hiện có, tài nguyên xung đột đã cung cấp gần đây nhất sẽ được sử dụng.

aapt2 optimize options file[,file[..]]

5 Chỉ định mã nhận dạng gói để sử dụng cho ứng dụng của bạn.

Mã nhận dạng gói mà bạn chỉ định phải lớn hơn hoặc bằng 0x7f, trừ khi được dùng kết hợp với

aapt2 optimize options file[,file[..]]

6.

aapt2 optimize options file[,file[..]]

6

Cho phép sử dụng mã nhận dạng gói đặt trước.

Mã nhận dạng gói đặt trước là các mã nhận dạng thường được chỉ định cho các thư viện chia sẻ và nằm trong phạm vi từ 0x02 đến 0x7e. Bằng cách sử dụng

aapt2 optimize options file[,file[..]]

6, bạn có thể chỉ định các ID nằm trong phạm vi ID gói đặt trước.

Bạn chỉ nên sử dụng tuỳ chọn này cho các gói có phiên bản

aapt2 optimize options file[,file[..]]

9 từ 26 trở xuống.

aapt2 optimize -o output.apk --enable-sparse-encoding input.apk

0 Chỉ định thư mục để tạo

aapt2 dump resources output.apk

5 trong đó.

aapt2 optimize -o output.apk --enable-sparse-encoding input.apk

2 Tạo tệp đầu ra cho các quy tắc ProGuard.

aapt2 optimize -o output.apk --enable-sparse-encoding input.apk

3 Tạo tệp đầu ra cho các quy tắc ProGuard cho DEX chính.

aapt2 optimize -o output.apk --enable-sparse-encoding input.apk

4 Tắt tính năng tự động tạo phiên bản kiểu và bố cục SDK.

aapt2 optimize -o output.apk --enable-sparse-encoding input.apk

5 Tắt tính năng tự động tạo phiên bản cho các vectơ vẽ được. Chỉ sử dụng cờ này khi xây dựng tệp APK của bạn bằng Thư viện vectơ vẽ được.

aapt2 optimize -o output.apk --enable-sparse-encoding input.apk

6 Tắt tính năng tự động tạo phiên bản tài nguyên chuyển đổi. Chỉ dùng cờ này khi xây dựng tệp APK bằng thư viện Hỗ trợ chuyển đổi.

aapt2 optimize -o output.apk --enable-sparse-encoding input.apk

7 Tắt tính năng tự động loại bỏ các tài nguyên có giá trị giống nhau trên các cấu hình tương thích.

aapt2 optimize -o output.apk --enable-sparse-encoding input.apk

8 Bật mã hoá các mục nhập thưa thớt bằng cách sử dụng cây tìm kiếm nhị phân. Tính năng này hữu ích cho việc tối ưu hóa kích thước tệp APK, nhưng sẽ làm giảm hiệu suất truy xuất tài nguyên.

aapt2 optimize -o output.apk --enable-sparse-encoding input.apk

9 Yêu cầu bản địa hoá các chuỗi được đánh dấu "đề xuất".

aapt2 compile path-to-input-files [options] -o output-directory/

00 Cung cấp danh sách cấu hình được phân tách bằng dấu phẩy.

Ví dụ: nếu có các phần phụ thuộc trên thư viện hỗ trợ (chứa bản dịch cho nhiều ngôn ngữ), bạn có thể lọc các tài nguyên chỉ dành cho cấu hình ngôn ngữ cụ thể, chẳng hạn như tiếng Anh hoặc tiếng Tây Ban Nha.

Bạn phải xác định cấu hình ngôn ngữ bằng mã ngôn ngữ gồm hai chữ cái theo ISO 639-1, theo sau là mã vùng gồm hai chữ cái theo ISO 3166-1-alpha-2 sau chữ 'r' viết thường (ví dụ: en-rUS).

aapt2 compile path-to-input-files [options] -o output-directory/

01 Cho phép AAPT2 chọn mật độ phù hợpp nhất và loại bỏ tất cả mật độ khác.

Bạn có thể sử dụng một số bộ định tính mật độ pixel trong ứng dụng của bạn, chẳng hạn như ldpi, hdpi và xhdpi. Khi bạn chỉ định mật độ ưu tiên, AAPT2 sẽ chọn và lưu trữ mật độ phù hợp nhất trong bảng tài nguyên, đồng thời xoá tất cả mật độ khác.

aapt2 compile path-to-input-files [options] -o output-directory/

02 Xuất nội dung tệp APK sang thư mục do

aapt2 compile path-to-input-files [options] -o output-directory/

03 chỉ định.

Nếu gặp bất cứ lỗi nào khi sử dụng cờ này, bạn có thể khắc phục bằng cách nâng cấp lên Bộ công cụ bản dựng SDK Android 28.0.0 trở lên.

aapt2 compile path-to-input-files [options] -o output-directory/

04 Thiết lập phiên bản SDK tối thiểu mặc định để sử dụng cho

aapt2 dump resources output.apk

9.

aapt2 compile path-to-input-files [options] -o output-directory/

06 Thiết lập phiên bản SDK mục tiêu mặc định để sử dụng cho

aapt2 dump resources output.apk

9.

aapt2 compile path-to-input-files [options] -o output-directory/

08 Chỉ định mã phiên bản để chèn vào

aapt2 dump resources output.apk

9 (nếu chưa có).

aapt2 compile path-to-input-files [options] -o output-directory/

10 Chỉ định tên phiên bản để đưa vào

aapt2 dump resources output.apk

9 (nếu chưa có).

aapt2 compile path-to-input-files [options] -o output-directory/

12 Chỉ định mã sửa đổi để chèn vào tệp

aapt2 dump resources output.apk

9 (nếu chưa có).

aapt2 compile path-to-input-files [options] -o output-directory/

14 Nếu bạn chỉ định

aapt2 compile path-to-input-files [options] -o output-directory/

15,

aapt2 compile path-to-input-files [options] -o output-directory/

16 hoặc

aapt2 compile path-to-input-files [options] -o output-directory/

17, thì các giá trị này sẽ thay thế mọi giá trị đã có trong tệp kê khai. Theo mặc định, sẽ không có gì thay đổi nếu tệp kê khai đã xác định các thuộc tính này.

aapt2 compile path-to-input-files [options] -o output-directory/

18 Chỉ định mã phiên bản để đưa vào tệp

aapt2 dump resources output.apk

9 (nếu chưa có).

aapt2 compile path-to-input-files [options] -o output-directory/

20 Chỉ định tên phiên bản để đưa vào

aapt2 dump resources output.apk

9 (nếu chưa có).

aapt2 compile path-to-input-files [options] -o output-directory/

22 Tạo tài nguyên đã biên dịch ở định dạng Protobuf.

Thích hợp để sử dụng làm dữ liệu đầu vào cho để tạo Android App Bundle.

aapt2 compile path-to-input-files [options] -o output-directory/

24 Tạo

aapt2 dump resources output.apk

5 bằng mã nhận dạng tài nguyên không phải cuối cùng. Các tham chiếu đến mã nhận dạng trong mã của ứng dụng sẽ không cùng dòng trong quá trình biên dịch

aapt2 compile path-to-input-files [options] -o output-directory/

26 hoặc

aapt2 compile path-to-input-files [options] -o output-directory/

27.

aapt2 compile path-to-input-files [options] -o output-directory/

28 Phát hành một tệp tại đường dẫn đã cho có một danh sách tên của các loại tài nguyên và liên kết mã nhận dạng của các tài nguyên đó. Phù hợp để sử dụng với

aapt2 compile path-to-input-files [options] -o output-directory/

29.

aapt2 compile path-to-input-files [options] -o output-directory/

30 Tiêu thụ tệp được tạo bằng

aapt2 compile path-to-input-files [options] -o output-directory/

31 chứa danh sách tên của các loại tài nguyên và mã nhận dạng được chỉ định của các tài nguyên đó.

Tuỳ chọn này cho phép các mã nhận dạng được chỉ định giữ trạng thái ổn định ngay cả khi bạn xoá hoặc thêm tài nguyên mới trong khi liên kết.

aapt2 compile path-to-input-files [options] -o output-directory/

32 Chỉ định gói Java tuỳ chỉnh để tạo

aapt2 dump resources output.apk

5 trong đó.

aapt2 compile path-to-input-files [options] -o output-directory/

34 Tạo cùng một tệp

aapt2 dump resources output.apk

5 với tên gói khác nhau.

aapt2 compile path-to-input-files [options] -o output-directory/

36 Thêm chú thích JavaDoc vào tất cả lớp Java đã tạo.

aapt2 compile path-to-input-files [options] -o output-directory/

37 Tạo một tệp văn bản chứa các ký hiệu tài nguyên của lớp

aapt2 compile path-to-input-files [options] -o output-directory/

38 trong tệp được chỉ định.

Bạn phải chỉ định đường dẫn đến tệp đầu ra.

aapt2 compile path-to-input-files [options] -o output-directory/

39 Cho phép thêm các tài nguyên mới trong lớp phủ mà không cần dùng thẻ

aapt2 optimize options file[,file[..]]

4.

aapt2 compile path-to-input-files [options] -o output-directory/

41 Đổi tên gói trong tệp

aapt2 dump resources output.apk

9.

aapt2 compile path-to-input-files [options] -o output-directory/

43 Đổi tên gói mục tiêu cho

aapt2 compile path-to-input-files [options] -o output-directory/

44.

Bạn nên sử dụng tuỳ chọn này cùng với

aapt2 compile path-to-input-files [options] -o output-directory/

45.

aapt2 compile path-to-input-files [options] -o output-directory/

46

Chỉ định phần mở rộng của loại tệp mà bạn không muốn nén.

aapt2 compile path-to-input-files [options] -o output-directory/

47 Phân tách tài nguyên dựa trên một nhóm cấu hình để tạo một phiên bản tệp APK khác.

Bạn phải chỉ định đường dẫn đến tệp APK đầu ra cùng với tập hợp các cấu hình.

aapt2 compile path-to-input-files [options] -o output-directory/

48 Tệp đầu ra cho các quy tắc ProGuard đã tạo cho DEX chính.

aapt2 compile path-to-input-files [options] -o output-directory/

49 Tạo bộ quy tắc lưu giữ ProGuard tối thiểu.

aapt2 compile path-to-input-files [options] -o output-directory/

50 Tắt tính năng tự động xoá tài nguyên mà không cần thiết lập mặc định. Chỉ sử dụng tuỳ chọn này khi tạo các gói lớp phủ tài nguyên thời gian chạy.

aapt2 compile path-to-input-files [options] -o output-directory/

51 Cờ cũ chỉ định việc sử dụng giá trị nhận dạng gói 0x01.

aapt2 compile path-to-input-files [options] -o output-directory/

52 Chỉ định danh sách tên sản phẩm được phân tách bằng dấu phẩy.

aapt2 compile path-to-input-files [options] -o output-directory/

53 Xoá tiền tố không gian tên XML và thông tin URI khỏi tệp

aapt2 dump resources output.apk

9 và tệp nhị phân XML trong

aapt2 compile path-to-input-files [options] -o output-directory/

55.

aapt2 compile path-to-input-files [options] -o output-directory/

56 Tạo thư viện thời gian chạy Android dùng chung.

aapt2 compile path-to-input-files [options] -o output-directory/

57 Tạo thư viện Android tĩnh.

aapt2 compile path-to-input-files [options] -o output-directory/

58 Hợp nhất tất cả tài nguyên thư viện trong gói của ứng dụng.

aapt2 compile path-to-input-files [options] -o output-directory/

59 Giữ cho các tệp quy tắc ProGuard không tham chiếu đến tệp nguồn.

aapt2 compile path-to-input-files [options] -o output-directory/

60 package-name chỉ định tên gói để sử dụng khi tạo

aapt2 dump resources output.apk

5 cho các ký hiệu riêng tư. Nếu không chỉ định, các ký hiệu công khai và riêng tư sẽ sử dụng tên gói của ứng dụng.

aapt2 compile path-to-input-files [options] -o output-directory/

62 Cung cấp kiểu được xác định trong tài nguyên

aapt2 compile path-to-input-files [options] -o output-directory/

63 để thay thế các định nghĩa trước đó thay vì hợp nhất.

aapt2 compile path-to-input-files [options] -o output-directory/

64 Đổi tên gói trong bảng tài nguyên thành package-name.

aapt2 compile path-to-input-files [options] -o output-directory/

65 Không nén tài nguyên.

aapt2 compile path-to-input-files [options] -o output-directory/

66 Giữ lại các giá trị thuộc tính thô trong tệp XML.

aapt2 compile path-to-input-files [options] -o output-directory/

67 Không nén các tệp có phần mở rộng khớp với regular-expression. Sử dụng ký hiệu

aapt2 compile path-to-input-files [options] -o output-directory/

68 cho ký tự cuối dòng. Sử dụng ngữ pháp biểu thức chính quy ECMAScript phân biệt chữ hoa chữ thường.

aapt2 compile path-to-input-files [options] -o output-directory/

69 Xem lỗi xác thực tệp kê khai là cảnh báo.

aapt2 compile path-to-input-files [options] -o output-directory/

70 Loại trừ giá trị của tài nguyên có cấu hình chứa bộ hạn định được chỉ định.

aapt2 compile path-to-input-files [options] -o output-directory/

71 Chèn

aapt2 compile path-to-input-files [options] -o output-directory/

72 vào nút ứng dụng của tệp kê khai, giúp ứng dụng có thể gỡ lỗi ngay cả trên các thiết bị được phát hành chính thức.

aapt2 compile path-to-input-files [options] -o output-directory/

73 Không cho phép các lớp phủ có nhiều chế độ hiển thị.

aapt2 compile path-to-input-files [options] -o output-directory/

74 Không chuyển đổi tuần tự thông tin tệp nguồn khi tạo tài nguyên ở định dạng Protobuf.

aapt2 compile path-to-input-files [options] -o output-directory/

75 Tạo mảnh theo dõi JSON

aapt2 dump resources output.apk

1 theo folder đã chỉ định.

aapt2 compile path-to-input-files [options] -o output-directory/

77 Chỉ hợp nhất các tài nguyên mà không xác minh các tham chiếu tài nguyên. Bạn chỉ nên sử dụng cờ này cùng với cờ

aapt2 compile path-to-input-files [options] -o output-directory/

57.

aapt2 dump resources output.apk

3 Hiện trình đơn trợ giúp.

aapt2 dump resources output.apk

4 Bật tinh năng tăng độ chi tiết cho tệp đầu ra.

Dump

aapt2 compile path-to-input-files [options] -o output-directory/

81 được dùng để in thông tin về tệp APK bạn đã tạo bằng lệnh

aapt2 dump resources output.apk

6.

Cú pháp kết xuất

Cú pháp chung để sử dụng

aapt2 compile path-to-input-files [options] -o output-directory/

81 như sau:

aapt2 dump sub-command filename.apk [options]

Ví dụ sau in nội dung từ bảng tài nguyên của tệp APK đã chỉ định:

aapt2 dump resources output.apk

Lệnh con kết xuất

Hãy chỉ định một trong các lệnh con sau đây bằng lệnh

aapt2 compile path-to-input-files [options] -o output-directory/

81:

Bảng 4. Lệnh con kết xuất

Lệnh conMô tả

aapt2 compile path-to-input-files [options] -o output-directory/

85 In nội dung của Vùng chứa AAPT2 (APC) được tạo trong quá trình biên dịch.

aapt2 compile path-to-input-files [options] -o output-directory/

86 In thông tin trích xuất từ tệp kê khai của tệp APK.

aapt2 compile path-to-input-files [options] -o output-directory/

87 In mọi cấu hình mà tài nguyên sử dụng trong tệp APK.

aapt2 compile path-to-input-files [options] -o output-directory/

88 In tài nguyên có thể bao phủ của tệp APK.

aapt2 compile path-to-input-files [options] -o output-directory/

89 In tên gói của tệp APK.

aapt2 compile path-to-input-files [options] -o output-directory/

90 In các quyền được trích xuất từ tệp kê khai của tệp APK.

aapt2 compile path-to-input-files [options] -o output-directory/

91 In nội dung của nhóm chuỗi bảng tài nguyên của tệp apk.

aapt2 compile path-to-input-files [options] -o output-directory/

92 In thành phần mẹ của các kiểu được dùng trong APK.

aapt2 compile path-to-input-files [options] -o output-directory/

93 In nội dung bảng tài nguyên của tệp apk.

aapt2 compile path-to-input-files [options] -o output-directory/

94 In chuỗi từ XML đã biên dịch của tệp apk.

aapt2 compile path-to-input-files [options] -o output-directory/

95 In cây XML đã biên dịch của tệp apk.

Tuỳ chọn kết xuất

Sử dụng các tuỳ chọn sau với

aapt2 compile path-to-input-files [options] -o output-directory/

81:

Bảng 5. Tuỳ chọn kết xuất

Tuỳ chọnMô tả

aapt2 compile path-to-input-files [options] -o output-directory/

97 Nén tệp đầu ra các giá trị khi hiển thị tài nguyên.

aapt2 compile path-to-input-files [options] -o output-directory/

98 Chỉ định một tệp làm đối số sẽ được kết xuất từ APK.

aapt2 dump resources output.apk

4 Tăng độ chi tiết của tệp đầu ra.

Diff

Sử dụng

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

00 để so sánh hai tệp APK và xác định mọi điểm khác biệt.

Cú pháp diff

Cú pháp chung để sử dụng

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

00 như sau:

aapt2 diff first.apk second.apk

Không có tuỳ chọn cho lệnh

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

00.

Tối ưu hoá

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

03 được dùng để chạy các hoạt động tối ưu hoá trên tài nguyên hợp nhất và

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

04 trước khi được đóng gói vào tệp APK. Tính năng tối ưu hoá này có thể giảm kích thước tệp APK khoảng 1-3%, tuỳ thuộc vào kích thước và số lượng tài nguyên đang sử dụng.

Cú pháp tối ưu hoá

Cú pháp chung để sử dụng

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

03 như sau:

aapt2 optimize options file[,file[..]]

Ví dụ sau đây tối ưu hoá tài nguyên trong

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

06 và tạo một tệp APK mới được tối ưu hoá trong

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

07. Tệp APK này dùng một cây tìm kiếm nhị phân nhỏ gọn hơn thay cho cách trình bày bảng phẳng thông thường, nhờ đó giảm kích thước tệp APK cùng với chi phí hiệu suất truy xuất:

aapt2 optimize -o output.apk --enable-sparse-encoding input.apk

Tùy chọn tối ưu hoá

Bạn có thể sử dụng các tuỳ chọn sau với

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

03:

Bảng 6. Tùy chọn tối ưu hoá

Tuỳ chọnMô tả

aapt2 link -o output.apk -I android_sdk/platforms/android_version/android.jar

compiled/res/values_values.arsc.flat
compiled/res/drawable_Image.flat --manifest /path/to/AndroidManifest.xml -v
8 Chỉ định đường dẫn đầu ra cho tệp APK tài nguyên đã liên kết.

Cờ này là bắt buộc vì bạn phải chỉ định đường dẫn cho tệp APK đầu ra có thể chứa các tài nguyên đã liên kết.

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

10 Chỉ định đường dẫn đến thư mục đầu ra dành cho các phần phân tách.

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

11 Chỉ định đường dẫn đến tệp cấu hình XML.

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

12 In các cấu phần phần mềm nhiều APK và thoát.

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

13 Chỉ định danh sách mật độ màn hình được phân tách bằng dấu phẩy mà tệp APK được tối ưu hoá. Tất cả tài nguyên không dùng đến trên các thiết bị có mật độ cụ thể sẽ bị xoá khỏi tệp APK.

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

14

Chỉ định đường dẫn đến tệp

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

15 chứa danh sách tài nguyên và lệnh cho từng tài nguyên.

Định dạng type/resource_name#[directive][,directive]

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

16 Chỉ định danh sách cấu hình được phân tách bằng dấu phẩy mà bạn muốn đưa vào. Tuỳ chọn mặc định là tất cả cấu hình.

aapt2 compile path-to-input-files [options] -o output-directory/

47 Phân tách tài nguyên dựa trên một nhóm cấu hình để tạo một phiên bản tệp APK khác.

Bạn phải chỉ định đường dẫn đến tệp APK đầu ra cùng với tập hợp các cấu hình.

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

18 Chỉ định một danh sách cấu phần phần mềm được phân tách bằng dấu phẩy mà bạn muốn giữ lại. Nếu bạn không chỉ định thì tất cả cấu phần phần mềm sẽ được giữ lại.

aapt2 optimize -o output.apk --enable-sparse-encoding input.apk

8 Bật mã hoá các mục nhập thưa thớt bằng cách sử dụng cây tìm kiếm nhị phân. Tính năng này hữu ích cho việc tối ưu hoá kích thước tệp APK, nhưng sẽ làm giảm hiệu suất truy xuất tài nguyên.

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

20 Thu gọn tên tài nguyên thành một giá trị duy nhất trong nhóm chuỗi khoá. Tài nguyên được miễn trừ bằng lệnh

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

21 trong một tệp do

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

22 chỉ định.

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

23 Rút ngắn đường dẫn tài nguyên bên trong tệp APK.

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

24 Chỉ định đường dẫn để xuất bản đồ ánh xạ các đường dẫn tài nguyên cũ sang đường dẫn được rút ngắn.

aapt2 dump resources output.apk

4 Tăng độ chi tiết của tệp đầu ra.

aapt2 dump resources output.apk

3 Trình bày phần nội dung trợ giúp của công cụ.

Chuyển đổi

Theo mặc định, lệnh

aapt2 link -o output.apk -I android_sdk/platforms/android_version/android.jar

compiled/res/values_values.arsc.flat
compiled/res/drawable_Image.flat --manifest /path/to/AndroidManifest.xml -v
0 của AAPT biên dịch các tài nguyên thành một định dạng nhị phân phù hợp với tệp APK. Bạn cũng có thể chỉ định định dạng protobuf phù hợp với các AAB bằng cách chỉ định

aapt2 compile path-to-input-files [options] -o output-directory/

22. Lệnh

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

29 chuyển đổi tệp APK giữa hai định dạng.

Cú pháp chuyển đổi

Cú pháp chung để sử dụng

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

29 như sau:

aapt2 compile path-to-input-files [options] -o output-directory/

0

Ví dụ sau đây chuyển đổi các tài nguyên trong

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

06 và tạo một tệp APK mới trong

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

07 chứa các tài nguyên ở định dạng Protobuf. Tệp APK này dùng một cây tìm kiếm nhị phân nhỏ gọn hơn thay cho cách trình bày bảng phẳng thông thường, nhờ đó giảm kích thước tệp APK cùng với chi phí hiệu suất truy xuất:

aapt2 compile path-to-input-files [options] -o output-directory/

1

Tuỳ chọn chuyển đổi

Sử dụng các tuỳ chọn sau với

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

29:

Bảng 7. Các tuỳ chọn chuyển đổi

Tuỳ chọnMô tả

aapt2 link -o output.apk -I android_sdk/platforms/android_version/android.jar

compiled/res/values_values.arsc.flat
compiled/res/drawable_Image.flat --manifest /path/to/AndroidManifest.xml -v
8

Chỉ định đường dẫn đầu ra cho tệp APK tài nguyên đã liên kết.

Cờ này là bắt buộc vì bạn phải chỉ định đường dẫn cho tệp APK đầu ra có thể chứa các tài nguyên đã liên kết.

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

35 Định dạng đầu ra. Giá trị được chấp nhận là

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

36 và

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

37. Khi không được thiết lập, giá trị mặc định sẽ là

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

37.

aapt2 optimize -o output.apk --enable-sparse-encoding input.apk

8 Bật mã hoá các mục nhập thưa thớt bằng cách sử dụng cây tìm kiếm nhị phân. Tính năng này hữu ích cho việc tối ưu hoá kích thước tệp APK, nhưng sẽ làm giảm hiệu suất truy xuất tài nguyên.

aapt2 compile path-to-input-files [options] -o output-directory/

66 Giữ lại các giá trị thuộc tính thô trong tệp XML.

aapt2 dump resources output.apk

4 Tăng độ chi tiết của tệp đầu ra.

aapt2 dump resources output.apk

3 Trình bày phần nội dung trợ giúp của công cụ.

Chế độ trình nền (Daemon mode)

AAPT phiên bản 2.19 đã ra mắt chế độ trình nền để đưa ra các lệnh. Chế độ trình nền cho phép bạn nhập nhiều lệnh trong một phiên AAPT.

Cú pháp trình nền

Bắt đầu chế độ trình nền bằng lệnh sau:

aapt2 compile path-to-input-files [options] -o output-directory/

2

Khi chế độ trình nền đang chạy, bạn có thể nhập các lệnh. Mỗi đối số của lệnh phải nằm trên một dòng riêng biệt, với một dòng trống ở cuối lệnh. Thoát khỏi chế độ trình nền bằng cách nhấn tổ hợp phím Control+D.

Hãy cân nhắc các lệnh

aapt2 link -o output.apk -I android_sdk/platforms/android_version/android.jar

compiled/res/values_values.arsc.flat
compiled/res/drawable_Image.flat --manifest /path/to/AndroidManifest.xml -v
0 riêng lẻ sau đây:

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

Bạn có thể nhập các lệnh sau đây trong chế độ trình nền:

aapt2 compile path-to-input-files [options] -o output-directory/

4

Tuỳ chọn chế độ trình nền

Một tuỳ chọn duy nhất cho chế độ trình nền là

aapt2 compile path-to-input-files [options] -o output-directory/

75, tuỳ chọn này sẽ tạo mảnh theo dõi JSON

aapt2 dump resources output.apk

1 thành folder đã chỉ định.

Phiên bản

Xác định phiên bản AAPT2 mà bạn đang sử dụng bằng lệnh

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

46:

aapt2 compile path-to-input-files [options] -o output-directory/

5

Các thay đổi về hành vi khi sử dụng AAPT2

Trước AAPT2, AAPT là phiên bản mặc định của Công cụ đóng gói tài nguyên Android nhưng hiện không còn được dùng nữa. Mặc dù AAPT2 sẽ hoạt động tức thì với các dự án cũ, nhưng phần này sẽ mô tả một số thay đổi về hành vi mà bạn cần lưu ý.

Hệ phân cấp phần tử trong tệp kê khai Android

Trong các phiên bản AAPT trước, các phần tử lồng trong các nút không chính xác trong tệp

aapt2 dump resources output.apk

9 sẽ bị bỏ qua hoặc dẫn đến cảnh báo. Hãy xem ví dụ sau đây:

aapt2 compile path-to-input-files [options] -o output-directory/

6

Các phiên bản AAPT trước sẽ chỉ bỏ qua thẻ

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

48 bị đặt nhầm chỗ.

Với AAPT2, bạn sẽ gặp lỗi sau:

aapt2 compile path-to-input-files [options] -o output-directory/

7

Để giải quyết lỗi này, hãy nhớ lồng ghép chính xác các phần tử tệp kê khai của bạn. Để biết thêm thông tin, hãy đọc bài viết Tổng quan về tệp kê khai ứng dụng.

Khai báo tài nguyên

Bạn không còn chỉ định được loại tài nguyên từ thuộc tính

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

49. Ví dụ sau đây khai báo không chính xác một mục tài nguyên

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

50:

aapt2 compile path-to-input-files [options] -o output-directory/

8

Việc khai báo loại tài nguyên theo cách này sẽ dẫn đến lỗi bản dựng sau đây:

aapt2 compile path-to-input-files [options] -o output-directory/

9

Để khắc phục lỗi này, hãy khai báo rõ ràng loại tệp bằng

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

51:

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

0

Ngoài ra, khi khai báo phần tử

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

52, phần tử gốc cũng phải là tài nguyên kiểu. Nếu không, bạn sẽ gặp lỗi tương tự như sau:

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

1

Sử dụng các ký hiệu tham chiếu tài nguyên @ không đúng cách

AAPT2 phát ra lỗi bản dựng khi bạn bỏ qua hoặc thiết lập không chính xác các ký hiệu tham chiếu tài nguyên (

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

53). Ví dụ: nếu bạn bỏ qua biểu tượng khi chỉ định thuộc tính kiểu:

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

2

Khi xây dựng mô-đun, AAPT2 sẽ phát ra lỗi bản dựng sau đây:

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

3

Ngoài ra, nếu bạn thêm biểu tượng không chính xác khi truy cập vào một tài nguyên từ không gian tên

aapt2 diff first.apk second.apk

1:

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

4

Khi xây dựng mô-đun, AAPT2 sẽ phát ra lỗi bản dựng sau đây:

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

5

Cấu hình thư viện không chính xác

Nếu ứng dụng của bạn có phần phụ thuộc trên thư viện bên thứ ba được tạo bằng các phiên bản Bộ công cụ bản dựng SDK Android cũ hơn thì ứng dụng của bạn có thể gặp sự cố trong thời gian chạy mà không hiện lỗi hoặc cảnh báo nào. Sự cố này có thể xảy ra vì trong quá trình tạo thư viện, các trường

aapt2 dump resources output.apk

5 được khai báo

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

56. Do đó, tất cả mã tài nguyên nằm trong các lớp của thư viện.

AAPT2 căn cứ vào việc gán lại mã nhận dạng cho các tài nguyên thư viện khi tạo bản dựng ứng dụng. Nếu thư viện giả định rằng các mã nhận dạng này là

aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/

56 và cùng dòng trong DEX của thư viện, thì thời gian chạy sẽ không khớp.

Để giải quyết lỗi này, hãy liên hệ với người tạo thư viện để xây dựng lại thư viện bằng cách sử dụng phiên bản Bộ công cụ xây dựng SDK Android mới nhất rồi đăng lại thư viện.