ConfigStore

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 utilisent PRODUCT_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);
    ...
}
...