Unter Android werden Systemeigenschaften in der ConfigStore-Klasse gespeichert. ConfigStore verwendet Build-Flags, um Konfigurationswerte in der Anbieterpartition zu speichern. Ein Dienst in der Systempartition greift über HIDL auf diese Werte zu.
Systemeigenschaften werden mitPRODUCT_DEFAULT_PROPERTY_OVERRIDES
in default.prop
in der Anbieterpartition gespeichert und der Dienst verwendet sysprop
, um diese Eigenschaften zu lesen.
Die ConfigStore HAL bleibt in AOSP, um alte Anbieterpartitionen zu unterstützen. Auf Geräten mit Android 10 werden zuerst Systemeigenschaften von surfaceflinger
gelesen. Wenn für ein Konfigurationselement in SurfaceFlingerProperties.sysprop
keine Systemeigenschaft definiert ist, wechselt surfaceflinger
zur ConfigStore HAL.
Build-Flags und Systemeigenschaften
Jede Build-Flag in ConfigStore hat eine übereinstimmende Systemeigenschaft, wie in der folgenden Tabelle dargestellt.
Build-Flags | Systemeigenschaften |
---|---|
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
|
Neue Systemeigenschaften
Android 10 enthält die folgenden neuen Systemeigenschaften:
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
Weitere Informationen zu diesen Properties finden Sie unter frameworks/native/services/surfaceflinger/sysprop/SurfaceFlingerProperties.sysprop
.
SurfaceFlingerProperties verwenden
In den folgenden Beispielen für die SurfaceFlingerProperties-Bibliothek lautet der Funktionsname api_name
in 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); ... } ...