در اندروید، ویژگی های سیستم در کلاس 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 |
ویژگی های سیستم جدید
اندروید 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); ... } ...