Sous Android, les propriétés système sont stockées dans la classe ConfigStore. ConfigStore utilise des indicateurs de build 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 partitions des anciens fournisseurs. Sur les appareils exécutant Android 10, surfaceflinger
lit d'abord les propriétés du 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.
Construire des indicateurs et des propriétés système
Chaque indicateur de build dans ConfigStore possède une propriété système correspondante, comme indiqué dans le tableau suivant.
Construire des drapeaux | Propriétés du 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 du 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 plus de détails sur ces propriétés, reportez-vous à frameworks/native/services/surfaceflinger/sysprop/SurfaceFlingerProperties.sysprop
.
Utilisation de 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); ... } ...