ב-Android, מאפייני המערכת מאוחסנים בכיתה ConfigStore. ConfigStore משתמש בדגלים של build כדי לאחסן את ערכי התצורה במחיצה של הספק, ושירות במחיצה של המערכת ניגש לערכים האלה באמצעות HIDL.
המאפיינים של המערכת משתמשים ב-PRODUCT_DEFAULT_PROPERTY_OVERRIDES
כדי לאחסן את מאפייני המערכת ב-default.prop
במחיצה של הספק, והשירות משתמש ב-sysprop
כדי לקרוא את המאפיינים האלה.
ה-HAL של ConfigStore נשאר ב-AOSP כדי לתמוך במחיצות קודמות של ספקים. במכשירים עם Android 10, surfaceflinger
קורא קודם את מאפייני המערכת. אם לא מוגדר מאפיין מערכת לפריט תצורה ב-SurfaceFlingerProperties.sysprop
, surfaceflinger
חוזר ל-HAL של ConfigStore.
דגלים של build ומאפייני מערכת
לכל דגל build ב-ConfigStore יש מאפיין מערכת תואם, כפי שמתואר בטבלה הבאה.
דגלים ל-build | מאפייני מערכת |
---|---|
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_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
פרטים על המאפיינים האלה מופיעים במאמר 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); ... } ...