In Android, le proprietà di sistema vengono archiviate nella classe ConfigStore. ConfigStore usa flag di build per archiviare i valori di configurazione nella partizione del fornitore e un servizio nella partizione di sistema accede a questi valori utilizzando l'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à.
Il ConfigStore HAL rimane in AOSP per supportare le partizioni dei fornitori precedenti. Sui dispositivi con Android 10, surfaceflinger
legge prima le proprietà di sistema. Se non viene definita alcuna proprietà di sistema per un elemento di configurazione in SurfaceFlingerProperties.sysprop
, surfaceflinger
utilizza l'HAL di ConfigStore.
Flag di build 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 maggiori dettagli 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); ... } ...