Di Android, properti sistem disimpan di class ConfigStore. ConfigStore menggunakan flag build untuk menyimpan nilai konfigurasi di partisi vendor, dan layanan di partisi sistem mengakses nilai tersebut menggunakan HIDL.
Properti sistem menggunakanPRODUCT_DEFAULT_PROPERTY_OVERRIDES untuk menyimpan properti sistem di default.prop dalam partisi vendor, dan layanan menggunakan sysprop untuk membaca properti tersebut.
HAL ConfigStore tetap ada di AOSP untuk mendukung partisi vendor lama. Di
perangkat yang menjalankan Android 10,
surfaceflinger membaca properti sistem terlebih dahulu; jika tidak ada properti
sistem yang ditentukan untuk item konfigurasi di
SurfaceFlingerProperties.sysprop, surfaceflinger
akan melakukan penggantian ke HAL ConfigStore.
Flag build dan properti sistem
Setiap tanda build di ConfigStore memiliki properti sistem yang cocok, seperti yang ditunjukkan dalam tabel berikut.
| Flag build | Properti sistem |
|---|---|
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
|
Properti sistem baru
Android 10 menyertakan properti sistem baru berikut:
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
Untuk mengetahui detail tentang properti ini, lihat
frameworks/native/services/surfaceflinger/sysprop/SurfaceFlingerProperties.sysprop.
Menggunakan SurfaceFlingerProperties
Dalam contoh berikut untuk library SurfaceFlingerProperties, nama fungsi adalah api_name di
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); ... } ...