Android 10 descarta la HAL de ConfigStore debido al alto consumo de memoria y al uso difícil, y reemplaza la HAL con propiedades del sistema. En Android 10:
- ConfigStore usa indicadores de compilación para almacenar valores de configuración en la partición del proveedor, y un servicio en la partición del sistema accede a esos valores mediante HIDL (esto también es cierto en Android 9).
- Las propiedades del sistema usan
PRODUCT_DEFAULT_PROPERTY_OVERRIDES
para almacenar las propiedades del sistema endefault.prop
en la partición del proveedor, y el servicio usasysprop
para leer esas propiedades.
ConfigStore HAL permanece en AOSP para admitir particiones de proveedores heredados. En los dispositivos que ejecutan Android 10, surfaceflinger
lee primero las propiedades del sistema; si no se define ninguna propiedad del sistema para un elemento de configuración en SurfaceFlingerProperties.sysprop
, surfaceflinger
a ConfigStore HAL.
Marcas de compilación y propiedades del sistema
Cada indicador de compilación en ConfigStore tiene una propiedad del sistema coincidente, como se muestra en la siguiente tabla.
Construir banderas | Propiedades del 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 |
Nuevas propiedades del sistema
Android 10 incluye las siguientes propiedades nuevas del 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
Para obtener detalles sobre estas propiedades, consulte frameworks/native/services/surfaceflinger/sysprop/SurfaceFlingerProperties.sysprop
.
Uso de SurfaceFlingerProperties
En los siguientes ejemplos de la biblioteca SurfaceFlingerProperties, el nombre de la función es api_name
en 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); ... } ...