AOSP cung cấp các lựa chọn sau đây để lưu trữ thông tin cấu hình trên thiết bị:
- Thuộc tính hệ thống
- Thuộc tính của lớp trừu tượng phần cứng (HAL)
- Tệp XML cấu hình hệ thống
- Lớp phủ tài nguyên (tĩnh và thời gian chạy)
Thuộc tính hệ thống
Thuộc tính hệ thống là các cặp khoá/giá trị chuỗi được lưu trữ trong từ điển chung build.prop. Thuộc tính hệ thống là tài nguyên trên toàn hệ thống, dễ sử dụng và có chi phí hiệu suất thấp. Khi sử dụng thuộc tính hệ thống, bạn không cần sử dụng giao tiếp liên quy trình (IPC) ngay cả khi một thuộc tính hệ thống được chia sẻ trên nhiều tiến trình. Tuy nhiên, thuộc tính hệ thống tương tự như các biến chung và có thể gây hại khi sử dụng sai cách. Việc sử dụng sai cách thuộc tính hệ thống có thể dẫn đến các vấn đề như lỗ hổng bảo mật và người dùng không truy cập được vào ứng dụng. Trước khi sử dụng thuộc tính hệ thống để lưu trữ thông tin cấu hình, hãy cân nhắc các lựa chọn cấu hình khác.
Để biết thêm thông tin về thuộc tính hệ thống, hãy xem bài viết Thêm thuộc tính hệ thống
Thuộc tính HAL
Khi nguồn thông tin chính xác cho một cấu hình là từ một thành phần phần cứng trên thiết bị, HAL cho phần cứng đó phải cung cấp thông tin cho thành phần đó. Hãy xác định một phương thức HAL mới trong HAL hiện có để truy cập vào cấu hình. Để biết thêm thông tin về cách phát triển HAL, hãy xem AIDL cho HAL.
Tệp XML cấu hình hệ thống
Khi dữ liệu cấu hình là tĩnh nhưng phức tạp (có cấu trúc), hãy cân nhắc sử dụng XML hoặc các định dạng tương tự khác cho dữ liệu cấu hình. Đảm bảo rằng giản đồ tệp vẫn ổn định. Đối với tệp XML, bạn có thể sử dụng
xsd_config
để giữ cho giản đồ ổn định và tận dụng trình phân tích cú pháp XML được tạo tự động.
Lớp phủ tài nguyên
Bạn có thể sử dụng lớp phủ tài nguyên để tuỳ chỉnh một sản phẩm. Có 2 loại lớp phủ tài nguyên:
Lớp phủ tài nguyên tiêu chuẩn dùng để tuỳ chỉnh một sản phẩm tại thời gian xây dựng. Để biết thông tin về lớp phủ tài nguyên tiêu chuẩn, hãy xem bài viết Tuỳ chỉnh bản dựng bằng lớp phủ tài nguyên.
Lớp phủ tài nguyên thời gian chạy (RRO) dùng để thay đổi giá trị tài nguyên của một gói mục tiêu tại thời gian chạy. Ví dụ: một ứng dụng được cài đặt trên hình ảnh hệ thống có thể thay đổi hành vi dựa trên giá trị của một tài nguyên. Thay vì cố định giá trị tài nguyên trong mã tại thời gian xây dựng, một RRO (runtime resource overlay) được cài đặt trên một phân vùng khác có thể thay đổi giá trị của tài nguyên ứng dụng tại thời gian chạy. Để biết thêm thông tin về RRO, hãy xem bài viết Thay đổi giá trị của tài nguyên ứng dụng tại thời gian chạy.