Tài nguyên gói Android bằng aapt và tạo tệp R bằng công cụ này trong quá trình tạo. Trong bước này, các tệp XML được biên dịch thành nhị phân và các tài nguyên khác chỉ được đóng gói như chúng. Bạn có thể mở tệp .apk dưới dạng tệp lưu trữ zip và truy cập tất cả các tệp tài nguyên như hiện tại. Các dự án thư viện chỉ chứa các tệp nguồn và các tài nguyên được thêm vào dự án tại thời gian biên dịch, vì vậy chúng sẽ tồn tại bằng cách nào đó trong tệp .apk. Có lẽ bố cục không phải là 1: 1 vì XML đã được biên dịch cho dự án thư viện. Có thể là cách bạn có thể sử dụng aapt để xóa các tệp khỏi dự án thư viện khỏi việc được đưa vào lúc xây dựng, nhưng sau đó chúng sẽ không thể truy cập được trong dự án của bạn. Cũng có thể có một cách để làm xáo trộn tên tài nguyên của bạn tại thời gian biên dịch bằng cách sử dụng aapt và ant, nhưng sau đó điều đó không ngăn chúng có thể truy cập chúng.
Tôi không chắc chắn lý do bạn muốn lớp R.java khác với biểu đồ tài nguyên thực tế. Không bao gồm các tài nguyên đó vào thời gian xây dựng hoặc chúng sẽ nằm trong gói ứng dụng. Bố trí của bạn được nén dưới dạng tệp nhị phân trong đầu ra, vì vậy tôi không chắc chắn chúng dễ dàng giải mã hoặc tái sử dụng trong một dự án khác như thế nào.
Kết thúc trò chơi ở đây là gì? Nếu nó là để bảo vệ tài nguyên của bạn, nó sẽ là khó khăn. Android cực kỳ không an toàn nếu ai đó có khả năng root điện thoại của họ. Nếu bạn muốn bảo vệ IP của bạn, mà tôi giả định là endgame ở đây, tôi sẽ cố gắng và biên dịch dự án của tôi thành một gói ứng dụng và xem liệu tôi có thể dịch ngược hay trích xuất các tài nguyên quan trọng từ gói ứng dụng hay không. Có thể thử một số obfuscation, nhưng một lần nữa, tôi không biết đủ về các tập tin XML biên dịch để biết nếu họ nhận được obfuscated, đủ để không được dễ dàng decompiled.
Có người cảm thấy tự do để sửa tôi nếu tôi sai, nhưng đây chỉ là 2 xu của tôi.
Mục tiêu chính của câu hỏi đơn giản là tìm hiểu cách xây dựng ROM Android của R.java có thể loại trừ tài nguyên. Bạn có một điểm thú vị về các bố cục có thể được biên dịch theo hai bước, mặc dù logic này sẽ không hoạt động đối với các drawables bị loại trừ, vì vậy phải có một phương thức khác khi chơi. Liên quan đến câu hỏi thứ hai, bảo mật không phải là mối quan tâm nhiều như làm sạch ô nhiễm xảy ra trong tệp R.java cuối cùng với các dự án thư viện vì tất cả các id kết thúc thành một tham chiếu lớp 'R' duy nhất trong gói chính , thường dẫn đến chồng chéo. – Devunwired
@Devunwired Bạn đang sử dụng công cụ bảo vệ hay một công cụ ám ảnh? Khi tôi nhìn qua các tập tin apk của tôi tất cả các drawables của tôi (như hình ảnh .png) chỉ đơn giản là nằm trong thư mục res tại vị trí tương ứng của họ. Một lần nữa, như tôi đã nói, tập tin R.java được tạo ra trong bước aapt của giai đoạn biên dịch, vì vậy nếu bất cứ điều gì giống như những gì bạn muốn là có thể, nó sẽ là trước hoặc trong bước đó. – onit
Đó chính xác là quan điểm của tôi, nhưng thực hiện bài tập đó với android.jar thay vì ứng dụng của riêng bạn. Bạn sẽ thấy rằng thư mục 'res /' có nhiều drawables hơn bạn có thể tham chiếu bằng cách gọi 'android.R.drawable.xxx' trong mã của bạn. – Devunwired