Với tài nguyên, có hỗ trợ tích hợp để cung cấp các lựa chọn thay thế cho các ngôn ngữ khác nhau, phiên bản HĐH, định hướng màn hình, v.v., như được mô tả ở đây . Không có cái nào có sẵn với tài sản. Ngoài ra, nhiều phần của API hỗ trợ việc sử dụng các định danh tài nguyên. Cuối cùng, tên của các tài nguyên được chuyển thành tên trường không đổi được kiểm tra tại thời điểm biên dịch, do đó, ít có cơ hội cho sự không khớp giữa mã và chính tài nguyên. Không ai trong số đó áp dụng cho tài sản.
Vậy tại sao có một thư mục tài sản? Nếu bạn muốn tính toán tài sản bạn muốn sử dụng trong thời gian chạy, điều đó khá dễ dàng. Với tài nguyên, bạn sẽ phải khai báo danh sách tất cả các ID tài nguyên có thể được sử dụng và tính toán một chỉ mục vào danh sách. (Điều này hơi khó xử và gây ra lỗi nếu bộ tài nguyên thay đổi trong chu kỳ phát triển.) (EDIT: bạn có thể truy xuất ID tài nguyên theo tên bằng cách sử dụng getIdentifier
, nhưng điều này làm mất lợi ích của việc kiểm tra thời gian biên dịch.) cũng được tổ chức thành một hệ thống phân cấp thư mục, không được hỗ trợ bởi các tài nguyên. Đó là một cách khác nhau để quản lý dữ liệu. Mặc dù tài nguyên bao gồm hầu hết các trường hợp, tài sản có sử dụng không thường xuyên.
Một sự khác biệt khác: tài nguyên được xác định trong dự án thư viện được tự động nhập vào các dự án ứng dụng phụ thuộc vào thư viện. Đối với tài sản, điều đó không xảy ra; tệp tài sản phải có trong thư mục tài sản của (các) dự án ứng dụng. [EDIT: Với hệ thống xây dựng dựa trên Gradle mới của Android (được sử dụng với Android Studio), điều này không còn đúng nữa. Các thư mục tài sản cho các dự án thư viện được đóng gói vào các tệp .aar, do đó, các tài sản được xác định trong các dự án thư viện được hợp nhất vào các dự án ứng dụng (vì vậy chúng không phải có trong /assets
thư mục của ứng dụng nếu chúng nằm trong thư viện được tham chiếu).]
EDIT: Tuy nhiên, một sự khác biệt khác phát sinh nếu bạn muốn gói một phông chữ tùy chỉnh với ứng dụng của bạn. Có các lệnh gọi API để tạo một Typeface
tệp từ tệp phông được lưu trữ trong hệ thống tệp hoặc trong thư mục ứng dụng của bạn assets/
. Nhưng không có API để tạo một Typeface
tệp từ tệp phông được lưu trong res/
thư mục (hoặc từ một InputStream
, cho phép sử dụng res/
thư mục). [ LƯU Ý: Với Android O (hiện có sẵn trong bản xem trước alpha), bạn sẽ có thể bao gồm các phông chữ tùy chỉnh làm tài nguyên. Xem mô tả ở đây của tính năng quá hạn này. Tuy nhiên, miễn là mức API tối thiểu của bạn là 25 hoặc ít hơn, bạn sẽ phải gắn bó với việc đóng gói phông chữ tùy chỉnh dưới dạng tài sản thay vì tài nguyên.]
res
là viết tắt của tài nguyên, vậy thìassets
viết tắt của từ gì ??