ใน Android ระบบจะจัดเก็บพร็อพเพอร์ตี้ของระบบไว้ในคลาส ConfigStore ConfigStore ใช้แฟล็กบิลด์ เพื่อจัดเก็บค่าการกำหนดค่าในพาร์ติชันของผู้จำหน่าย และบริการในพาร์ติชันของระบบจะเข้าถึง ค่าเหล่านั้นโดยใช้ HIDL
พร็อพเพอร์ตี้ของระบบใช้PRODUCT_DEFAULT_PROPERTY_OVERRIDES เพื่อ
จัดเก็บพร็อพเพอร์ตี้ของระบบใน default.prop ในพาร์ติชันของผู้ให้บริการ
และบริการใช้ sysprop เพื่ออ่านพร็อพเพอร์ตี้เหล่านั้น
HAL ของ ConfigStore ยังคงอยู่ใน AOSP เพื่อรองรับพาร์ติชันของผู้ให้บริการเดิม ในอุปกรณ์ที่ใช้ Android 10
surfaceflinger จะอ่านพร็อพเพอร์ตี้ของระบบก่อน หากไม่มีพร็อพเพอร์ตี้ของระบบ
ที่กำหนดไว้สำหรับรายการการกำหนดค่าใน
SurfaceFlingerProperties.sysprop surfaceflinger
จะกลับไปใช้ HAL ของ ConfigStore
บิลด์แฟล็กและพร็อพเพอร์ตี้ของระบบ
แฟล็กบิลด์แต่ละรายการใน ConfigStore จะมีพร็อพเพอร์ตี้ของระบบที่ตรงกัน ดังที่แสดงในตารางต่อไปนี้
| แฟล็กบิลด์ | พร็อพเพอร์ตี้ของระบบ |
|---|---|
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
|
พร็อพเพอร์ตี้ของระบบใหม่
Android 10 มีพร็อพเพอร์ตี้ใหม่ของระบบต่อไปนี้
ro.surface_flinger.default_composition_dataspacero.surface_flinger.default_composition_pixel_formatro.surface_flinger.use_color_managementro.surface_flinger.wcg_composition_dataspacero.surface_flinger.wcg_composition_pixel_formatro.surface_flinger.display_primary_redro.surface_flinger.display_primary_greenro.surface_flinger.display_primary_bluero.surface_flinger.display_primary_whitero.surface_flinger.protected_contentsro.surface_flinger.set_idle_timer_msro.surface_flinger.set_touch_timer_msro.surface_flinger.use_smart_90_for_videoro.surface_flinger.protected_contentsro.surface_flinger.support_kernel_idle_timer
ดูรายละเอียดเกี่ยวกับพร็อพเพอร์ตี้เหล่านี้ได้ที่
frameworks/native/services/surfaceflinger/sysprop/SurfaceFlingerProperties.sysprop
ใช้ SurfaceFlingerProperties
ในตัวอย่างต่อไปนี้สำหรับไลบรารี SurfaceFlingerProperties ชื่อฟังก์ชัน
คือ api_name ใน
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); ... } ...