متجر الإعدادات

في نظام Android، يتم تخزين خصائص النظام في الفئة ConfigStore. يستخدم ConfigStore علامات الإنشاء لحفظ قيم الإعدادات في قسم المورّد، وتحصل خدمة في قسم النظام على هذه القيم باستخدام HIDL.

تستخدم سمات النظام PRODUCT_DEFAULT_PROPERTY_OVERRIDES لتخزين سمات النظام في default.prop في قسم المورّد، وتستخدم الخدمة sysprop لقراءة هذه السمات.

تظل HAL ConfigStore في AOSP لدعم أقسام الموردين القديمة. على الأجهزة التي تعمل بنظام التشغيل Android 10، يقرؤي surfaceflinger سمات النظام أولاً. وفي حال عدم تحديد سمة SYSTEM لعنصر الضبط في SurfaceFlingerProperties.sysprop، يعودsurfaceflinger إلى استخدام واجهة برمجة التطبيقات ConfigStore HAL.

علامات الإنشاء وخصائص النظام

تحتوي كل علامة تجميع في ConfigStore على سمة نظام مطابقة، كما هو موضّح في الجدول التالي.

علامات الإنشاء خصائص النظام
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

خصائص النظام الجديدة

يتضمّن نظام التشغيل Android 10 خصائص النظام الجديدة التالية:

  • 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

للاطّلاع على تفاصيل عن هذه السمات، يُرجى الرجوع إلى frameworks/native/services/surfaceflinger/sysprop/SurfaceFlingerProperties.sysprop.

استخدام SurfaceFlingerProperties

في الأمثلة التالية لـ مكتبة SurfaceFlingerProperties، اسم الدالة هو api_name في 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);
    ...
}
...