In Android werden Systemeigenschaften in der ConfigStore-Klasse gespeichert. ConfigStore verwendet Build-Flags, um Konfigurationswerte in der Anbieterpartition zu speichern, und ein Dienst in der Systempartition greift über HIDL auf diese Werte zu.
In Systemeigenschaften wirdPRODUCT_DEFAULT_PROPERTY_OVERRIDES
verwendet, um Systemeigenschaften in default.prop
in der Anbieterpartition zu speichern. Der Dienst verwendet sysprop
, um diese Attribute zu lesen.
Der ConfigStore HAL bleibt in AOSP, um Legacy-Anbieterpartitionen zu unterstützen. Auf Geräten mit Android 10 liest surfaceflinger
zuerst die Systemeigenschaften. Wenn in SurfaceFlingerProperties.sysprop
keine Systemeigenschaft für ein Konfigurationselement definiert ist, greift surfaceflinger
auf den ConfigStore HAL zurück.
Build-Flags und Systemattribute
Jedes Build-Flag in ConfigStore hat eine übereinstimmende Systemeigenschaft, wie in der folgenden Tabelle gezeigt.
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 umfasst 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 Eigenschaften findest du 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); ... } ...