Trong Android, các thuộc tính hệ thống được lưu trữ trong lớp ConfigStore. ConfigStore sử dụng cờ bản dựng để lưu trữ các giá trị cấu hình trong phân vùng nhà cung cấp và một dịch vụ trong phân vùng hệ thống truy cập vào các giá trị đó bằng HIDL.
Các thuộc tính hệ thống sử dụngPRODUCT_DEFAULT_PROPERTY_OVERRIDES
để lưu trữ các thuộc tính hệ thống trong default.prop
trong phân vùng nhà cung cấp. Đồng thời, dịch vụ sử dụng sysprop
để đọc các thuộc tính đó.
HAL ConfigStore vẫn nằm trong AOSP để hỗ trợ các phân vùng nhà cung cấp cũ. Trên các thiết bị chạy Android 10, surfaceflinger
sẽ đọc các thuộc tính hệ thống trước tiên; nếu không có thuộc tính hệ thống nào được xác định cho một mục cấu hình trong SurfaceFlingerProperties.sysprop
, thì surfaceflinger
sẽ quay lại HAL ConfigStore.
Cờ bản dựng và thuộc tính hệ thống
Mỗi cờ bản dựng trong ConfigStore đều có một thuộc tính hệ thống phù hợp, như minh hoạ trong bảng sau.
Cờ dựng | Thuộc tính hệ thống |
---|---|
TARGET_FORCE_HWC_FOR_VIRTUAL_DISPLAYS
|
ro.surface_flinger.force_hwc_copy_for_virtual_displays
|
TARGET_HAS_HDR_DISPLAY
|
ro.surface_flinger.has_HDR_display
|
TARGET_HAS_WIDE_COLOR_DISPLAY
|
ro.surface_flinger.has_wide_color_display
|
NUM_FRAMEBUFFER_SURFACE_BUFFERS
|
ro.surface_flinger.max_frame_buffer_acquired_buffers
|
MAX_VIRTUAL_DISPLAY_DIMENSION
|
ro.surface_flinger.max_virtual_display_dimension
|
PRIMARY_DISPLAY_ORIENTATION
|
ro.surface_flinger.primary_display_orientation
|
PRESENT_TIME_OFFSET_FROM_VSYNC_NS
|
ro.surface_flinger.present_time_offset_from_vsync_ns
|
TARGET_RUNNING_WITHOUT_SYNC_FRAMEWORK
|
ro.surface_flinger.running_without_sync_framework
|
SF_START_GRAPHICS_ALLOCATOR_SERVICE
|
ro.surface_flinger.start_graphics_allocator_service
|
TARGET_USE_CONTEXT_PRIORITY
|
ro.surface_flinger.use_context_priority
|
USE_VR_FLINGER
|
ro.surface_flinger.use_vr_flinger
|
VSYNC_EVENT_PHASE_OFFSET_NS
|
ro.surface_flinger.vsync_event_phase_offset_ns
|
SF_VSYNC_EVENT_PHASE_OFFSET_NS
|
ro.surface_flinger.vsync_sf_event_phase_offset_ns
|
Các thuộc tính mới của hệ thống
Android 10 bao gồm các thuộc tính hệ thống mới sau đây:
ro.surface_flinger.default_composition_dataspace
ro.surface_flinger.default_composition_pixel_format
ro.surface_flinger.use_color_management
ro.surface_flinger.wcg_composition_dataspace
ro.surface_flinger.wcg_composition_pixel_format
ro.surface_flinger.display_primary_red
ro.surface_flinger.display_primary_green
ro.surface_flinger.display_primary_blue
ro.surface_flinger.display_primary_white
ro.surface_flinger.protected_contents
ro.surface_flinger.set_idle_timer_ms
ro.surface_flinger.set_touch_timer_ms
ro.surface_flinger.use_smart_90_for_video
ro.surface_flinger.protected_contents
ro.surface_flinger.support_kernel_idle_timer
Để biết thông tin chi tiết về các thuộc tính này, vui lòng tham khảo frameworks/native/services/surfaceflinger/sysprop/SurfaceFlingerProperties.sysprop
.
Sử dụng SurfaceFlingerProperties
Trong các ví dụ sau đây về thư viện SurfaceFlingerProperties, tên hàm là api_name
trong SurfaceFlingerProperties.sysprop
.
cc_binary { name: "cc_client", srcs: ["baz.cpp"], shared_libs: ["SurfaceFlingerProperties"], } java_library { name: "JavaClient", srcs: ["foo/bar.java"], libs: ["SurfaceFlingerProperties"], }
import android.sysprop.SurfaceFlingerProperties; ... static void foo() { ... boolean temp = SurfaceFlingerProperties.vsync_event_phase_offset_ns().orElse(true); ... } ...
#include <SurfaceFlingerProperties.sysprop.h> using namespace android::sysprop; ... void bar() { ... bool temp = SurfaceFlingerProperties::vsync_event_phase_offset_ns(true); ... } ...