In Android, le proprietà di sistema sono memorizzate nella classe ConfigStore. ConfigStore utilizza i flag di compilazione per memorizzare i valori di configurazione nella partizione del fornitore e un servizio nella partizione di sistema accede a questi valori utilizzando HIDL.
Le proprietà di sistema utilizzanoPRODUCT_DEFAULT_PROPERTY_OVERRIDES
per archiviare le proprietà di sistema in default.prop
nella partizione del fornitore e il servizio usa sysprop
per leggere queste proprietà.
L'HAL ConfigStore rimane in AOSP per supportare le partizioni del fornitore legacy. Sui dispositivi con Android 10, surfaceflinger
legge prima le proprietà di sistema. Se non è definita alcuna proprietà di sistema per un elemento di configurazione in SurfaceFlingerProperties.sysprop
, surfaceflinger
ricorre all'HAL ConfigStore.
Crea flag e proprietà di sistema
Ogni flag di build in ConfigStore ha una proprietà di sistema corrispondente, come mostrato nella tabella seguente.
Flag per build | Proprietà di sistema |
---|---|
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
|
Nuove proprietà di sistema
Android 10 include le seguenti nuove proprietà di sistema:
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
Per informazioni dettagliate su queste proprietà, consulta
frameworks/native/services/surfaceflinger/sysprop/SurfaceFlingerProperties.sysprop
.
Utilizzo di SurfaceFlingerProperties
Nei seguenti esempi per la libreria SurfaceFlingerProperties, il nome della funzione è 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); ... } ...