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 de fournisseurs. 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 à l'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_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
Pour en savoir plus sur ces propriétés, consultez frameworks/native/services/surfaceflinger/sysprop/SurfaceFlingerProperties.sysprop
.
Utiliser SurfaceFlingerProperties
Dans les exemples suivants de 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); ... } ...