Tại thời điểm xây dựng, công cụ aapt thu thập tất cả các tài nguyên bạn đã xác định (mặc dù các tệp riêng biệt hoặc các định nghĩa rõ ràng trong tệp) và gán ID tài nguyên cho chúng.
ID tài nguyên là một số 32 bit có dạng: PPTTNNNN. PP là gói tài nguyên dành cho; TT là loại tài nguyên; NNNN là tên của tài nguyên trong loại đó. Đối với tài nguyên ứng dụng, PP luôn là 0x7f.
Các giá trị TT và NNNN được gán bởi aapt một cách tùy ý - về cơ bản đối với mỗi kiểu mới, số có sẵn tiếp theo được gán và sử dụng (bắt đầu bằng 1); tương tự như vậy đối với mỗi tên mới trong một loại, số có sẵn tiếp theo được gán và sử dụng (bắt đầu bằng 1).
Vì vậy, nếu chúng ta có các tệp tài nguyên này được xử lý bởi aapt theo thứ tự sau:
layout/main.xml
drawable/icon.xml
layout/listitem.xml
Kiểu đầu tiên chúng ta thấy là "bố cục" để được đưa ra TT == 1. Tên đầu tiên dưới kiểu đó là "chính" để được cung cấp NNNN == 1. ID tài nguyên cuối cùng là 0x7f010001.
Tiếp theo, chúng ta thấy "drawable" được đưa ra TT == 2. Tên đầu tiên cho kiểu đó là "icon" để nhận NNNN == 1. ID tài nguyên cuối cùng là 0x7f020001.
Cuối cùng, chúng ta thấy một "bố cục" khác có TT == 1 như trước. Tên này có tên mới "listitem" để nhận giá trị tiếp theo NNNN == 2. ID tài nguyên cuối cùng là 0x7f010002.
Lưu ý rằng aapt theo mặc định không cố gắng giữ cho các số nhận dạng này giống nhau giữa các bản dựng. Mỗi khi tài nguyên thay đổi, tất cả chúng đều có thể nhận được số nhận dạng mới. Mỗi khi chúng được tạo, một R.java mới được tạo với các số nhận dạng hiện tại để mã của bạn nhận được các giá trị chính xác. Do đó, bạn không bao giờ được duy trì số nhận dạng tài nguyên ở bất kỳ nơi nào mà chúng có thể được sử dụng trên các bản dựng khác nhau của ứng dụng.
Sau khi tài nguyên được biên dịch và chỉ định số nhận dạng, aapt sẽ tạo tệp R.java cho mã nguồn của bạn và tệp nhị phân có tên "resources.arsc" chứa tất cả tên tài nguyên, số nhận dạng và giá trị (đối với tài nguyên đến từ tệp riêng biệt , giá trị của chúng là đường dẫn đến tệp đó trong .apk), ở định dạng có thể dễ dàng ánh xạ và phân tích cú pháp trên thiết bị trong thời gian chạy.
Bạn có thể nhận được bản tóm tắt của tệp resources.arsc trong apk bằng lệnh "aapt dump resources <path-to-apk>".
Định dạng của bảng tài nguyên nhị phân được ghi lại trong tệp tiêu đề cho cấu trúc dữ liệu tài nguyên ở đây:
https://github.com/android/platform_frameworks_base/blob/master/libs/androidfw/include/androidfw/ResourceTypes.h
Cách triển khai đầy đủ để đọc bảng tài nguyên trên thiết bị là ở đây:
https://github.com/android/platform_frameworks_base/blob/master/libs/androidfw/ResourceTypes.cpp