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