No Android, as propriedades do sistema são armazenadas na classe ConfigStore. O ConfigStore usa flags de build para armazenar valores de configuração na partição do fornecedor, e um serviço na partição do sistema acessa esses valores usando HIDL.
As propriedades do sistema usamPRODUCT_DEFAULT_PROPERTY_OVERRIDES para
armazenar propriedades do sistema em default.prop na partição do fornecedor,
e o serviço usa sysprop para ler essas propriedades.
A HAL ConfigStore permanece no AOSP para oferecer suporte a partições legadas do fornecedor. Em
dispositivos com Android 10,
surfaceflinger lê primeiro as propriedades do sistema. Se nenhuma propriedade
for definida para um item de configuração em
SurfaceFlingerProperties.sysprop, surfaceflinger
vai usar a HAL ConfigStore.
Flags de build e propriedades do sistema
Cada flag de build no ConfigStore tem uma propriedade de sistema correspondente, conforme mostrado na tabela a seguir.
| Flags de build | Propriedades do 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
|
Novas propriedades do sistema
O Android 10 inclui as seguintes novas propriedades do sistema:
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 mais detalhes sobre essas propriedades, consulte
frameworks/native/services/surfaceflinger/sysprop/SurfaceFlingerProperties.sysprop.
Usar SurfaceFlingerProperties
Nos exemplos a seguir da biblioteca SurfaceFlingerProperties, o nome da função é api_name em 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); ... } ...