En Android, las propiedades del sistema se almacenan en la clase ConfigStore. ConfigStore usa marcas 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 con HIDL.
Las propiedades del sistema usanPRODUCT_DEFAULT_PROPERTY_OVERRIDES para almacenar propiedades del sistema en default.prop en la partición del proveedor, y el servicio usa sysprop para leer esas propiedades.
La HAL de ConfigStore permanece en AOSP para admitir particiones heredadas del proveedor. En los dispositivos que ejecutan Android 10, surfaceflinger primero lee las propiedades del sistema. Si no se define ninguna propiedad del sistema para un elemento de configuración en SurfaceFlingerProperties.sysprop, surfaceflinger recurre a la HAL de ConfigStore.
Marcas de compilación y propiedades del sistema
Cada marca de compilación en ConfigStore tiene una propiedad del sistema coincidente, como se muestra en la siguiente tabla.
| Marcas de compilación | 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 del sistema nuevas:
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
Para obtener detalles sobre estas propiedades, consulta frameworks/native/services/surfaceflinger/sysprop/SurfaceFlingerProperties.sysprop.
Usa 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); ... } ...