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 memorizzare le proprietà di sistema in default.prop
nella partizione del fornitore e il servizio utilizza sysprop
per leggerle.
L'HAL ConfigStore rimane in AOSP per supportare le partizioni del fornitore precedenti. 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 surfaceflinger
, surfaceflinger
ricorre all'HAL ConfigStore.SurfaceFlingerProperties.sysprop
Crea flag e proprietà di sistema
Ogni flag di compilazione in ConfigStore ha una proprietà di sistema corrispondente, come mostrato nella tabella seguente.
Flag di compilazione | 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
.
Utilizzare 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); ... } ...