Dans Android, les propriétés système sont stockées dans la classe ConfigStore. ConfigStore utilise des indicateurs de compilation pour stocker les valeurs de configuration dans la partition du fournisseur, et un service de la partition système accède à ces valeurs à l'aide de HIDL.
Les propriétés système utilisentPRODUCT_DEFAULT_PROPERTY_OVERRIDES pour stocker les propriétés système dans default.prop dans la partition du fournisseur, et le service utilise sysprop pour lire ces propriétés.
Le HAL ConfigStore reste dans AOSP pour prendre en charge les anciennes partitions du fournisseur. Sur les appareils exécutant Android 10, surfaceflinger lit d'abord les propriétés système. Si aucune propriété système n'est définie pour un élément de configuration dans SurfaceFlingerProperties.sysprop, surfaceflinger revient au HAL ConfigStore.
Indicateurs de compilation et propriétés système
Chaque indicateur de compilation dans ConfigStore possède une propriété système correspondante, comme indiqué dans le tableau suivant.
| Indicateurs de compilation | Propriétés système |
|---|---|
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
|
Nouvelles propriétés système
Android 10 inclut les nouvelles propriétés système suivantes :
ro.surface_flinger.default_composition_dataspacero.surface_flinger.default_composition_pixel_formatro.surface_flinger.use_color_managementro.surface_flinger.wcg_composition_dataspacero.surface_flinger.wcg_composition_pixel_formatro.surface_flinger.display_primary_redro.surface_flinger.display_primary_greenro.surface_flinger.display_primary_bluero.surface_flinger.display_primary_whitero.surface_flinger.protected_contentsro.surface_flinger.set_idle_timer_msro.surface_flinger.set_touch_timer_msro.surface_flinger.use_smart_90_for_videoro.surface_flinger.protected_contentsro.surface_flinger.support_kernel_idle_timer
Pour en savoir plus sur ces propriétés, consultez frameworks/native/services/surfaceflinger/sysprop/SurfaceFlingerProperties.sysprop.
Utiliser SurfaceFlingerProperties
Dans les exemples suivants pour la bibliothèque SurfaceFlingerProperties, le nom de la fonction est api_name dans 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); ... } ...