Android में, सिस्टम प्रॉपर्टी ConfigStore क्लास में सेव की जाती हैं. ConfigStore, वेंडर पार्टीशन में कॉन्फ़िगरेशन वैल्यू सेव करने के लिए, बिल्ड फ़्लैग का इस्तेमाल करता है. साथ ही, सिस्टम पार्टीशन में मौजूद एक सेवा, HIDL का इस्तेमाल करके उन वैल्यू को ऐक्सेस करती है.
सिस्टम प्रॉपर्टी, वेंडर पार्टीशन मेंdefault.prop
में सिस्टम प्रॉपर्टी को स्टोर करने के लिए PRODUCT_DEFAULT_PROPERTY_OVERRIDES
का इस्तेमाल करती हैं. साथ ही, सेवा उन प्रॉपर्टी को पढ़ने के लिए 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 लाइब्रेरी के नीचे दिए गए उदाहरणों में, 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); ... } ...