ConfigStore

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ündeki default.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);
    ...
}
...