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.
El HAL de ConfigStore permanece en AOSP para admitir particiones heredadas de proveedores. 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
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_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, consulta frameworks/native/services/surfaceflinger/sysprop/SurfaceFlingerProperties.sysprop
.
Usa SurfaceFlingerProperties
En los siguientes ejemplos para 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); ... } ...