Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요.

구성

Android 10은 메모리 소비가 높고 사용이 어려운 ConfigStore HAL을 지원 중단하고 HAL을 시스템 속성으로 대체합니다. Android 10에서는 다음과 같습니다.

  • ConfigStore는 빌드 플래그를 사용하여 공급업체 파티션에 구성 값을 저장하며 시스템 파티션의 서비스에서는 HIDL을 사용하여 이 값에 액세스합니다(Android 9에도 적용됨).
  • 시스템 속성에서는 PRODUCT_DEFAULT_PROPERTY_OVERRIDES를 사용하여 공급업체 파티션의 default.prop에 시스템 속성을 저장하며 서비스에서는 sysprop를 사용하여 이러한 속성을 읽습니다.

ConfigStore HAL은 기존 공급업체 파티션을 지원할 수 있도록 AOSP에 남아 있습니다. Android 10을 실행하는 기기에서는 surfaceflinger가 시스템 속성을 먼저 읽습니다. 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 라이브러리에 관한 다음 예에서는 함수 이름이 SurfaceFlingerProperties.syspropapi_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);
    ...
}
...