في Android، يتم تخزين سمات النظام في فئة ConfigStore. تستخدم ConfigStore علامات الإصدار لتخزين قيم الإعداد في قسم المورّد، ويمكن لخدمة في قسم النظام الوصول إلى هذه القيم باستخدام HIDL.
تستخدم سمات النظامPRODUCT_DEFAULT_PROPERTY_OVERRIDES لتخزين سمات النظام في default.prop في قسم المورّد، وتستخدم الخدمة sysprop لقراءة هذه السمات.
يبقى ConfigStore HAL في AOSP لدعم أقسام المورّدين القديمة. على
الأجهزة التي تعمل بنظام التشغيل Android 10،
surfaceflinger تقرأ سمات النظام أولاً. وإذا لم يتم تحديد أي سمة نظام
لعنصر إعداد في
SurfaceFlingerProperties.sysprop، يعود surfaceflinger
إلى ConfigStore HAL.
علامات الإصدار وسمات النظام
تحتوي كل علامة إصدار في 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); ... } ...