Android'de sistem özellikleri ConfigStore sınıfında saklanır. ConfigStore, yapılandırma değerlerini satıcı bölümünde depolamak için yapı bayraklarını kullanır ve sistem bölümündeki bir hizmet, HIDL kullanarak bu değerlere erişir.
Sistem özellikleri, sistem özelliklerini satıcı bölümündekidefault.prop
dosyasında depolamak için PRODUCT_DEFAULT_PROPERTY_OVERRIDES
kullanır ve hizmet, bu özellikleri okumak için sysprop
kullanır. ConfigStore HAL, eski satıcı bölümlerini desteklemek için AOSP'de kalır. Android 10 çalıştıran cihazlarda, surfaceflinger
önce sistem özelliklerini okur; SurfaceFlingerProperties.sysprop
dosyasındaki bir yapılandırma öğesi için hiçbir sistem özelliği tanımlanmamışsa, surfaceflinger
ConfigStore HAL'ye geri döner.
Bayraklar ve sistem özellikleri oluşturun
ConfigStore'daki her yapı bayrağı, aşağıdaki tabloda gösterildiği gibi eşleşen bir sistem özelliğine sahiptir.
Bayraklar oluşturun | Sistem özellikleri |
---|---|
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 |
Yeni sistem özellikleri
Android 10 aşağıdaki yeni sistem özelliklerini içerir:
-
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
Bu özelliklerle ilgili ayrıntılar için frameworks/native/services/surfaceflinger/sysprop/SurfaceFlingerProperties.sysprop
dosyasına bakın.
SurfaceFlingerProperties'i kullanma
SurfaceFlingerProperties kitaplığı için aşağıdaki örneklerde, SurfaceFlingerProperties.sysprop
içindeki işlev adı api_name
.
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); ... } ...