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 đó.
ConfigStore HAL vẫn còn 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ờ dựng và thuộc tính hệ thống
Mỗi cờ bản dựng trong ConfigStore 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 về thư viện SurfaceFlingerProperties, trong SurfaceFlingerProperties.sysprop
, tên hàm là api_name
.
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); ... } ...