ตั้งแต่วันที่ 27 มีนาคม 2025 เป็นต้นไป เราขอแนะนำให้ใช้ android-latest-release
แทน aosp-main
เพื่อสร้างและมีส่วนร่วมใน AOSP โปรดดูข้อมูลเพิ่มเติมที่หัวข้อการเปลี่ยนแปลงใน AOSP
ConfigStore
จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน
บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
ใน Android พร็อพเพอร์ตี้ของระบบจะจัดเก็บไว้ในคลาส ConfigStore ConfigStore ใช้ Flag การสร้างเพื่อจัดเก็บค่าการกําหนดค่าในพาร์ติชันของผู้ให้บริการ และบริการในพาร์ติชันของระบบจะเข้าถึงค่าเหล่านั้นโดยใช้ HIDL
พร็อพเพอร์ตี้ของระบบใช้
PRODUCT_DEFAULT_PROPERTY_OVERRIDES
เพื่อจัดเก็บพร็อพเพอร์ตี้ของระบบใน
default.prop
ในพาร์ติชันของผู้ให้บริการ และบริการใช้
sysprop
เพื่ออ่านพร็อพเพอร์ตี้เหล่านั้น
ConfigStore HAL จะยังคงอยู่ใน AOSP เพื่อรองรับพาร์ติชันเดิมของผู้ให้บริการ ในอุปกรณ์ที่ใช้ Android 10
surfaceflinger
จะอ่านพร็อพเพอร์ตี้ของระบบก่อน หากไม่ได้กำหนดพร็อพเพอร์ตี้ของระบบสำหรับรายการการกําหนดค่าใน SurfaceFlingerProperties.sysprop
surfaceflinger
จะเปลี่ยนไปใช้ ConfigStore HAL
แฟล็กการสร้างและพร็อพเพอร์ตี้ของระบบ
Flag การสร้างแต่ละรายการใน ConfigStore มีพร็อพเพอร์ตี้ระบบที่ตรงกันดังที่แสดงในตารางต่อไปนี้
สร้าง Flag |
พร็อพเพอร์ตี้ของระบบ |
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);
...
}
...
ตัวอย่างเนื้อหาและโค้ดในหน้าเว็บนี้ขึ้นอยู่กับใบอนุญาตที่อธิบายไว้ในใบอนุญาตการใช้เนื้อหา Java และ OpenJDK เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2025-07-26 UTC
[[["เข้าใจง่าย","easyToUnderstand","thumb-up"],["แก้ปัญหาของฉันได้","solvedMyProblem","thumb-up"],["อื่นๆ","otherUp","thumb-up"]],[["ไม่มีข้อมูลที่ฉันต้องการ","missingTheInformationINeed","thumb-down"],["ซับซ้อนเกินไป/มีหลายขั้นตอนมากเกินไป","tooComplicatedTooManySteps","thumb-down"],["ล้าสมัย","outOfDate","thumb-down"],["ปัญหาเกี่ยวกับการแปล","translationIssue","thumb-down"],["ตัวอย่าง/ปัญหาเกี่ยวกับโค้ด","samplesCodeIssue","thumb-down"],["อื่นๆ","otherDown","thumb-down"]],["อัปเดตล่าสุด 2025-07-26 UTC"],[],[],null,["# ConfigStore\n\nIn Android, system properties are stored in the ConfigStore class. ConfigStore uses build flags\nto store config values in the vendor partition, and a service in the system partition accesses\nthose values using HIDL.\nSystem properties use `PRODUCT_DEFAULT_PROPERTY_OVERRIDES` to store system properties in `default.prop` in the vendor partition, and the service uses `sysprop` to read those properties.\n\n\u003cbr /\u003e\n\n\nThe ConfigStore HAL remains in AOSP to support legacy vendor partitions. On\ndevices running Android 10,\n`surfaceflinger` reads system properties first; if no system\nproperty is defined for a config item in\n`SurfaceFlingerProperties.sysprop`, `surfaceflinger`\nfalls back to the ConfigStore HAL.\n\nBuild flags and system properties\n---------------------------------\n\n\nEach build flag in ConfigStore has a matching system property, as shown in the\nfollowing table.\n\n| Build flags | System properties |\n|-----------------------------------------|----------------------------------------------------------|\n| `TARGET_FORCE_HWC_FOR_VIRTUAL_DISPLAYS` | `ro.surface_flinger.force_hwc_copy_for_virtual_displays` |\n| `TARGET_HAS_HDR_DISPLAY` | `ro.surface_flinger.has_HDR_display` |\n| `TARGET_HAS_WIDE_COLOR_DISPLAY` | `ro.surface_flinger.has_wide_color_display` |\n| `NUM_FRAMEBUFFER_SURFACE_BUFFERS` | `ro.surface_flinger.max_frame_buffer_acquired_buffers` |\n| `MAX_VIRTUAL_DISPLAY_DIMENSION` | `ro.surface_flinger.max_virtual_display_dimension` |\n| `PRIMARY_DISPLAY_ORIENTATION` | `ro.surface_flinger.primary_display_orientation` |\n| `PRESENT_TIME_OFFSET_FROM_VSYNC_NS` | `ro.surface_flinger.present_time_offset_from_vsync_ns` |\n| `TARGET_RUNNING_WITHOUT_SYNC_FRAMEWORK` | `ro.surface_flinger.running_without_sync_framework` |\n| `SF_START_GRAPHICS_ALLOCATOR_SERVICE` | `ro.surface_flinger.start_graphics_allocator_service` |\n| `TARGET_USE_CONTEXT_PRIORITY` | `ro.surface_flinger.use_context_priority` |\n| `USE_VR_FLINGER` | `ro.surface_flinger.use_vr_flinger` |\n| `VSYNC_EVENT_PHASE_OFFSET_NS` | `ro.surface_flinger.vsync_event_phase_offset_ns` |\n| `SF_VSYNC_EVENT_PHASE_OFFSET_NS` | `ro.surface_flinger.vsync_sf_event_phase_offset_ns` |\n\nNew system properties\n---------------------\n\n\nAndroid 10 includes the following new system\nproperties:\n\n- `ro.surface_flinger.default_composition_dataspace`\n- `ro.surface_flinger.default_composition_pixel_format`\n- `ro.surface_flinger.use_color_management`\n- `ro.surface_flinger.wcg_composition_dataspace`\n- `ro.surface_flinger.wcg_composition_pixel_format`\n- `ro.surface_flinger.display_primary_red`\n- `ro.surface_flinger.display_primary_green`\n- `ro.surface_flinger.display_primary_blue`\n- `ro.surface_flinger.display_primary_white`\n- `ro.surface_flinger.protected_contents`\n- `ro.surface_flinger.set_idle_timer_ms`\n- `ro.surface_flinger.set_touch_timer_ms`\n- `ro.surface_flinger.use_smart_90_for_video`\n- `ro.surface_flinger.protected_contents`\n- `ro.surface_flinger.support_kernel_idle_timer`\n\n\nFor details on these properties, refer to\n`frameworks/native/services/surfaceflinger/sysprop/SurfaceFlingerProperties.sysprop`.\n\nUse SurfaceFlingerProperties\n----------------------------\n\n\nIn the following examples for the SurfaceFlingerProperties library, the\nfunction name is `api_name` in\n`SurfaceFlingerProperties.sysprop`. \n\n```carbon\ncc_binary {\n name: \"cc_client\",\n srcs: [\"baz.cpp\"],\n shared_libs: [\"SurfaceFlingerProperties\"],\n}\njava_library {\n name: \"JavaClient\",\n srcs: [\"foo/bar.java\"],\n libs: [\"SurfaceFlingerProperties\"],\n}\n``` \n\n```python\nimport android.sysprop.SurfaceFlingerProperties;\n...\n\nstatic void foo() {\n ...\n boolean temp = SurfaceFlingerProperties.vsync_event_phase_offset_ns().orElse(true);\n ...\n}\n...\n``` \n\n```arduino\n#include \u003cSurfaceFlingerProperties.sysprop.h\u003e\nusing namespace android::sysprop;\n\n...\n\nvoid bar() {\n ...\n bool temp = SurfaceFlingerProperties::vsync_event_phase_offset_ns(true);\n ...\n}\n...\n```"]]