Android'de sistem özellikleri ConfigStore sınıfında depolanır. ConfigStore, yapılandırma değerlerini satıcı bölümünde depolamak için derleme işaretlerini kullanır ve sistem bölümündeki bir hizmet, HIDL kullanarak bu değerlere erişir.
Sistem özellikleri,PRODUCT_DEFAULT_PROPERTY_OVERRIDES kullanarak sistem özelliklerini satıcı bölümündeki default.prop içinde depolar ve hizmet, bu özellikleri okumak için sysprop kullanır.
ConfigStore HAL, eski tedarikçi bölümlerini desteklemek için AOSP'de kalır. Android 10 çalıştıran cihazlarda surfaceflinger önce sistem özelliklerini okur. surfaceflinger'daki bir yapılandırma öğesi için sistem özelliği tanımlanmamışsa surfaceflinger, ConfigStore HAL'a geri döner.SurfaceFlingerProperties.sysprop
İşaretler ve sistem özellikleri oluşturma
ConfigStore'daki her derleme işaretinin, aşağıdaki tabloda gösterildiği gibi eşleşen bir sistem özelliği vardır.
| İşaret oluşturma | Sistem özellikleri |
|---|---|
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
|
Yeni sistem özellikleri
Android 10 aşağıdaki yeni sistem özelliklerini içerir:
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
Bu özelliklerle ilgili ayrıntılı bilgi için frameworks/native/services/surfaceflinger/sysprop/SurfaceFlingerProperties.sysprop bölümünü inceleyin.
SurfaceFlingerProperties'i kullanma
SurfaceFlingerProperties kitaplığıyla ilgili aşağıdaki örneklerde, işlev adı api_name in
SurfaceFlingerProperties.sysprop'dir.
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); ... } ...