OpenHarmony之编译配置白名单机制深度解析:构建系统的安全防线

一、白名单机制概述

在OpenHarmony的构建系统中,compile_standard_whitelist.json是一个关键的安全验证机制,它作为编译过程中的"守门人",确保只有经过验证的组件和依赖关系才能被纳入最终构建产物。这个机制是OpenHarmony构建系统安全性和规范性的重要保障。

1.1 什么是编译配置白名单

编译配置白名单是OpenHarmony构建系统(hb)中用于验证构建配置合法性的机制。在构建过程中,系统会生成compile_standard_whitelist.json文件到/home/openharmony/out/preloader/{product_name}/目录下,用于记录允许通过的构建项。

1.2 白名单的工作原理

当执行hb build命令进行编译时,构建系统会按照以下流程工作:

  1. 读取编译配置:根据产品选择进行初始化 ,(主要是preloader阶段对系统所需配置进行扫描)
    编译流程可见我的主页文章
  2. 生成预加载信息:包括compile_standard_whitelist.json在内的各种配置文件
  3. 进行白名单验证:检查所有构建项是否符合安全规范
  4. 执行实际编译:通过验证的组件才会被编译

二、白名单的核心类别与功能

根据源码分析,OpenHarmony的编译白名单主要包含七大核心验证类别,每种类别负责不同维度的安全检查。

这里以Openharmony 6.0的白名单为例(像Openharmony 5.0会有部分差异):

{"bundle_subsystem_error": ["device/board/hihope/rk3568/ohos.build","device/board/hisilicon/hispark_taurus/linux/ohos.build","device/board/hisilicon/hispark_taurus/ohos.build","device/qemu/arm_virt/linux/ohos.build","third_party/flutter/glfw/bundle.json","vendor/hihope/rk3568/ohos.build","vendor/hihope/ipcamera/ohos.build"],"subsystem_components": [],"gn_part_or_subsystem_error": ["//arkcompiler/toolchain/tooling/test:debugger_entry","//arkcompiler/toolchain/tooling/test:jsdebugtest","//arkcompiler/toolchain/tooling:libark_ecma_debugger_test","//arkcompiler/toolchain/tooling/client:libark_client","//device/board/hihope/rk3568/camera/vdi_impl/v4l2/device_manager:camera_device_manager","//device/board/hihope/rk3568/camera/vdi_impl/v4l2/driver_adapter:camera_v4l2_adapter","//device/board/hihope/rk3568/camera/vdi_impl/v4l2/metadata_manager:camera_metadata_manager","//device/board/hihope/rk3568/camera/vdi_impl/v4l2/pipeline_core:camera_ipp_algo_example","//device/board/hihope/rk3568/camera/vdi_impl/v4l2/pipeline_core:camera_pipeline_core","//device/board/hihope/rk3568/camera/vdi_impl/v4l2:camera_host_vdi_impl_1.0","//device/board/hihope/rk3568/camera/vdi_impl/v4l2:camera_pipeline_config","//device/soc/rockchip/rk3568/hardware/codec/jpeg:libjpeg_vdi_impl","//device/soc/rockchip/rk3568/hardware/codec:libcodec_oem_interface","//device/soc/rockchip/rk3568/hardware/display:display_composer_vendor","//device/soc/rockchip/rk3568/hardware/display:display_gfx","//device/soc/rockchip/rk3568/hardware/display:libdisplay_buffer_vdi_impl","//device/soc/rockchip/rk3568/hardware/display:libdisplay_buffer_vendor","//device/soc/rockchip/rk3568/hardware/display:libdisplay_composer_vdi_impl","//device/soc/rockchip/rk3568/hardware/mpp/mpp/legacy:librockchip_vpu","//device/soc/rockchip/rk3568/hardware/omx_il/component/common:libRkOMX_Resourcemanager","//device/soc/rockchip/rk3568/hardware/omx_il/component/video/dec:libomxvpu_dec","//device/soc/rockchip/rk3568/hardware/omx_il/component/video/enc:libomxvpu_enc","//device/soc/rockchip/rk3568/hardware/omx_il/core:libOMX_Core","//device/soc/rockchip/rk3568/hardware/omx_il/libOMXPlugin:libOMX_Pluginhw","//ide/tools/previewer:lite_previewer","//vendor/hihope/rk3568/bluetooth:libbt_vendor","//vendor/hihope/ipcamera/bluetooth:libbt_vendor"],"deps_added_external_part_module": ["//arkcompiler/toolchain/inspector:ark_debugger_static","//arkcompiler/toolchain/tooling:libark_ecma_debugger","//arkcompiler/toolchain/tooling:libark_ecma_debugger_set","//arkcompiler/toolchain/websocket:websocket","//base/hiviewdfx/hilog/interfaces/js/kits/napi:libhilognapi_src","//base/hiviewdfx/hiview/test/plugins/examples/event_processor_example1:event_processor_example1","//base/hiviewdfx/hiview/test/plugins/examples/event_processor_example2:event_processor_example2","//base/hiviewdfx/hiview/test/plugins/examples/event_processor_example3:event_processor_example3","//base/hiviewdfx/hiview/test/plugins/examples/event_processor_example4:event_processor_example4","//base/hiviewdfx/hiview/test/plugins/examples/event_processor_example5:event_processor_example5","//base/hiviewdfx/hiview/test/plugins/examples/event_source_example:event_source_example","//base/hiviewdfx/hiview/test/plugins/examples_bundle/bundle_event_source_example:bundle_event_source_example","//base/hiviewdfx/hiview/test/plugins/examples_bundle/bundle_plugin_example1:bundle_plugin_example1","//base/hiviewdfx/hiview/test/plugins/examples_bundle/bundle_plugin_example2:bundle_plugin_example2","//base/hiviewdfx/hiview/test/plugins/examples_bundle/bundle_plugin_example3:bundle_plugin_example3","//base/security/device_security_level/baselib/msglib:messenger_static","//base/security/device_security_level/baselib/utils:utils_static","//base/security/device_security_level/interfaces/inner_api:dslm_sdk","//base/security/device_security_level/interfaces/inner_api:dslm_sdk_small","//base/security/device_security_level/oem_property/ohos/lite:dslm_ohos_cred_obj","//base/security/device_security_level/services/common:service_common_obj","//base/security/device_security_level/services/dslm:service_dslm_obj","//base/security/device_security_level/services/msg:service_msg_obj","//base/security/device_security_level/services/sa:dslm_server","//base/security/device_security_level/services/sa:service_sa_static","//base/security/huks/frameworks/huks_standard/main/core:libhuks_core_small_static","//base/security/huks/frameworks/huks_standard/main/crypto_engine/mbedtls:libhuks_mbedtls_small_static","//base/security/huks/frameworks/huks_standard/main/crypto_engine:libhuks_crypto_engine_small_static","//base/security/huks/frameworks/huks_standard/main/os_dependency:libhuks_os_dependency_small_static","//base/security/huks/interfaces/inner_api/huks_lite:huks_3.0_sdk","//base/security/huks/interfaces/inner_api/huks_lite:huks_server","//base/security/huks/services/huks_standard/huks_engine/main/core:huks_engine_core_standard","//base/security/huks/services/huks_standard/huks_service/main/core:libhuks_service_core_small_static","//base/security/huks/services/huks_standard/huks_service/main/os_dependency/idl:libhuks_service_idl_small_static","//base/security/huks/services/huks_standard/huks_service/main:libhuks_service_small_static","//base/security/huks/utils/crypto_adapter:libhuks_utils_client_service_adapter_static","//base/security/huks/utils/file_operator:libhuks_utils_file_operator_static","//base/security/huks/utils/mutex:libhuks_utils_mutex_static","//base/startup/init/interfaces/innerkits:libbegetutil","//base/startup/init/services/begetctl:begetctl","//base/startup/init/services/begetctl:param","//base/startup/init/services/begetctl:paramshell","//base/startup/init/services/init/standard:init","//base/startup/init/services/param/base:parameterbase_ext","//base/startup/init/services/sandbox:sandbox","//build/rust/tests/test_bin_cargo_crate:test_bin_cargo_crate","//build/rust/tests/test_bindgen_test/test_for_h:bindgen_test_for_h","//build/rust/tests/test_bindgen_test/test_for_hello_world:bindgen_test","//build/rust/tests/test_bindgen_test/test_for_hpp:bindgen_test_hpp","//build/rust/tests/test_cdylib_crate:test_cdylib_crate","//build/rust/tests/test_cxx:test_cxx_exe","//build/rust/tests/test_cxx_rust:test_cxx_rust","//build/rust/tests/test_cxx_rust:test_cxx_rust_staticlib","//build/rust/tests/test_dylib_crate:test_dylib_crate","//build/rust/tests/test_proc_macro_crate/test_attribute_macro:test_attribute_macro","//build/rust/tests/test_proc_macro_crate/test_derive_helper_macro:test_derive_helper_macro","//build/rust/tests/test_proc_macro_crate/test_function_macro:test_function_macro","//build/rust/tests/test_rlib_cargo_crate:target","//build/rust/tests/test_rlib_cargo_crate:test_rlib_crate_associated_bin","//build/rust/tests/test_rlib_crate:test_rlib_crate","//build/rust/tests/test_staticlib_crate:test_staticlib_crate","//commonlibrary/utils_lite/js/builtin/simulator:ace_kit_deviceinfo_simulator","//commonlibrary/utils_lite/js/builtin/simulator:ace_kit_file_simulator","//commonlibrary/utils_lite/js/builtin/simulator:ace_kit_kvstore_simulator","//developtools/syscap_codec:syscap_tool_bin","//device/board/hihope/rk3568/camera/vdi_impl/v4l2/pipeline_core:camera_pipeline_core","//device/board/hihope/rk3568/camera/vdi_impl/v4l2:camera_host_vdi_impl_1.0","//device/soc/rockchip/rk3568/hardware/codec:libcodec_oem_interface","//device/soc/rockchip/rk3568/hardware/display:display_composer_vendor","//device/soc/rockchip/rk3568/hardware/display:display_gfx","//device/soc/rockchip/rk3568/hardware/display:libdisplay_buffer_vdi_impl","//device/soc/rockchip/rk3568/hardware/display:libdisplay_buffer_vendor","//device/soc/rockchip/rk3568/hardware/display:libdisplay_composer_vdi_impl","//device/soc/rockchip/rk3568/hardware/mpp/mpp/hdi_mpp:hdi_mpp","//device/soc/rockchip/rk3568/hardware/mpp/mpp/legacy:librockchip_vpu","//device/soc/rockchip/rk3568/hardware/mpp/mpp/legacy:rockchip_vpu_src","//device/soc/rockchip/rk3568/hardware/omx_il/component/common:RkOMX_Basecomponent","//device/soc/rockchip/rk3568/hardware/omx_il/component/common:libRkOMX_Resourcemanager","//device/soc/rockchip/rk3568/hardware/omx_il/component/video/dec:libomxvpu_dec","//device/soc/rockchip/rk3568/hardware/omx_il/component/video/enc:libomxvpu_enc","//device/soc/rockchip/rk3568/hardware/omx_il/core:libOMX_Core","//device/soc/rockchip/rk3568/hardware/omx_il/osal:RkOMX_OSAL","//drivers/hdf_core/adapter/build/test_common:libhdf_test_common","//drivers/hdf_core/adapter/uhdf/manager:hdf_core","//drivers/hdf_core/adapter/uhdf/posix:hdf_posix_osal","//drivers/hdf_core/adapter/uhdf2/hdi:libhdi","//drivers/hdf_core/adapter/uhdf2/utils:libhdf_utils","//drivers/peripheral/bluetooth/audio/hal/hdi_passthrough:hdi_audio_bluetooth","//drivers/peripheral/partitionslot/hdi_service:libpartitionslot_driver","//drivers/peripheral/usb/sample/device/liteos:usb_dev_test","//drivers/peripheral/usb/sample/host/liteos_test:liteos_host_speed_test","//drivers/peripheral/usb/sample/host:usbhost_ddk_test","//foundation/arkui/ace_engine/adapter/preview/entrance:preview_entrance_source","//foundation/arkui/ace_engine/adapter/preview/osal:preview_osal_source","//foundation/arkui/ace_engine/frameworks/bridge/js_frontend/engine/jsi:js_engine_bridge_ark_linux","//foundation/arkui/ace_engine/frameworks/bridge/js_frontend/engine/jsi:js_engine_bridge_ark_windows","//foundation/arkui/ace_engine/frameworks/core/components_ng/animation:ace_core_components_animation_ng_linux","//foundation/arkui/ace_engine/frameworks/core/components_ng/animation:ace_core_components_animation_ng_windows","//foundation/arkui/ace_engine/frameworks/core/components_ng/base:ace_core_components_base_ng_linux","//foundation/arkui/ace_engine/frameworks/core/components_ng/base:ace_core_components_base_ng_windows","//foundation/arkui/ace_engine/frameworks/core/components_ng/event:ace_core_components_event_ng_linux","//foundation/arkui/ace_engine/frameworks/core/components_ng/event:ace_core_components_event_ng_windows","//foundation/arkui/ace_engine/frameworks/core/components_ng/gestures:ace_core_components_gestures_ng_linux","//foundation/arkui/ace_engine/frameworks/core/components_ng/gestures:ace_core_components_gestures_ng_windows","//foundation/arkui/ace_engine/frameworks/core/components_ng/image_provider:ace_core_components_image_provider_ng_linux","//foundation/arkui/ace_engine/frameworks/core/components_ng/image_provider:ace_core_components_image_provider_ng_windows","//foundation/arkui/ace_engine/frameworks/core/components_ng/layout:ace_core_components_layout_ng_linux","//foundation/arkui/ace_engine/frameworks/core/components_ng/layout:ace_core_components_layout_ng_windows","//foundation/arkui/ace_engine/frameworks/core/components_ng/manager:ace_core_components_manager_ng_linux","//foundation/arkui/ace_engine/frameworks/core/components_ng/manager:ace_core_components_manager_ng_windows","//foundation/arkui/ace_engine/frameworks/core/components_ng/pattern/patternlock:ace_core_components_patternlock_pattern_ng_linux","//foundation/arkui/ace_engine/frameworks/core/components_ng/pattern/patternlock:ace_core_components_patternlock_pattern_ng_windows","//foundation/arkui/ace_engine/frameworks/core/components_ng/pattern/preview_mock:ace_core_components_preview_mock_pattern_ng_linux","//foundation/arkui/ace_engine/frameworks/core/components_ng/pattern/preview_mock:ace_core_components_preview_mock_pattern_ng_windows","//foundation/arkui/ace_engine/frameworks/core/components_ng/pattern/qrcode:ace_core_components_qrcode_pattern_ng_linux","//foundation/arkui/ace_engine/frameworks/core/components_ng/pattern/qrcode:ace_core_components_qrcode_pattern_ng_windows","//foundation/arkui/ace_engine/frameworks/core/components_ng/pattern/security_component:ace_core_components_security_component_pattern_ng_linux","//foundation/arkui/ace_engine/frameworks/core/components_ng/pattern/security_component:ace_core_components_security_component_pattern_ng_windows","//foundation/arkui/ace_engine/frameworks/core/components_ng/pattern/text_field:ace_core_components_text_field_pattern_ng_linux","//foundation/arkui/ace_engine/frameworks/core/components_ng/pattern/text_field:ace_core_components_text_field_pattern_ng_windows","//foundation/arkui/ace_engine/frameworks/core/components_ng/pattern:ace_core_components_pattern_ng_linux","//foundation/arkui/ace_engine/frameworks/core/components_ng/pattern:ace_core_components_pattern_ng_windows","//foundation/arkui/ace_engine/frameworks/core/components_ng/property:ace_core_components_property_ng_linux","//foundation/arkui/ace_engine/frameworks/core/components_ng/property:ace_core_components_property_ng_windows","//foundation/arkui/ace_engine/frameworks/core/components_ng/render:ace_core_components_render_ng_linux","//foundation/arkui/ace_engine/frameworks/core/components_ng/render:ace_core_components_render_ng_windows","//foundation/arkui/ace_engine/frameworks/core/components_ng/svg:ace_core_components_svg_ng_linux","//foundation/arkui/ace_engine/frameworks/core/components_ng/svg:ace_core_components_svg_ng_windows","//foundation/arkui/ace_engine/frameworks/core/components_ng/syntax:ace_core_components_syntax_ng_linux","//foundation/arkui/ace_engine/frameworks/core/components_ng/syntax:ace_core_components_syntax_ng_windows","//foundation/arkui/ace_engine_lite/frameworks/targets/simulator:ace_lite","//foundation/arkui/ui_lite/ext/ide:ui_ide","//foundation/communication/ipc/ipc/test/auxiliary/native:ipc_client_test","//foundation/communication/ipc/ipc/test/auxiliary/native:ipc_server_test","//foundation/communication/ipc/ipc/test/auxiliary/native:ipc_server_test_extra","//foundation/communication/ipc/ipc/test/auxiliary/native:ipc_test_helper","//foundation/communication/ipc/ipc/test/auxiliary/native:ipc_test_helper_extra","//foundation/communication/netstack/frameworks/js/napi/http:http","//foundation/communication/netstack/utils/napi_utils:napi_utils_static","//foundation/distributeddatamgr/kv_store/kvstoremock/distributeddb:distributeddb_mock","//foundation/distributeddatamgr/kv_store/kvstoremock/interfaces/innerkits/distributeddata:distributeddata_inner_mock","//foundation/distributeddatamgr/kv_store/kvstoremock/interfaces/jskits/distributeddata:distributeddata","//foundation/distributeddatamgr/kv_store/kvstoremock/interfaces/jskits/distributedkvstore:distributedkvstore","//foundation/distributeddatamgr/preferences/frameworks/js/napi/preferences:preferences","//foundation/distributeddatamgr/preferences/interfaces/inner_api:native_preferences","//foundation/distributeddatamgr/relational_store/frameworks/js/napi/rdb:napi_rdb","//foundation/distributeddatamgr/relational_store/frameworks/js/napi/rdb:rdb","//foundation/distributeddatamgr/relational_store/interfaces/inner_api/rdb:native_rdb","//foundation/distributedhardware/distributed_camera/services/cameraservice/cameraoperator/client/test/sample:dcamera_client_demo","//foundation/multimedia/camera_framework/interfaces/inner_api/native/test:camera_capture","//foundation/multimedia/camera_framework/interfaces/inner_api/native/test:camera_capture_video","//foundation/multimedia/camera_framework/interfaces/inner_api/native/test:camera_video","//foundation/multimedia/player_framework/interfaces/inner_api/native:media_client","//foundation/window/window_manager/previewer:previewer_window","//foundation/window/window_manager/previewer:previewer_window_napi","//foundation/window/window_manager/test/demo:demo_mirror_screen_listener","//foundation/window/window_manager/test/demo:demo_snapshot_virtual_screen","//foundation/window/window_manager/test/demo:demo_system_sub_window","//foundation/window/window_manager/test/demo:demo_water_mark_listener","//foundation/window/window_manager/utils:libwmutil_static","//ide/tools/previewer/cli:cli_lite","//ide/tools/previewer/jsapp:jsapp_lite","//ide/tools/previewer/mock:mock_lite","//test/testfwk/arkxtest/uitest:uitest_server","//test/xts/acts/arkui/ace_ets_xcomponent/entry/src/main/cpp:nativerender","//test/xts/acts/arkui/libuv:libuvruntest","//test/xts/acts/bundlemanager/bundle_standard/bundlemanager/actsbundlenativeninthapitest/entry/src/main/cpp:bundlendk1","//test/xts/acts/graphic/vkgl/src/deqpgles2/build0001:libdeqpgles2func0001","//test/xts/acts/graphic/vkgl/src/deqpgles2/build0002:libdeqpgles2func0002","//test/xts/acts/graphic/vkgl/src/deqpgles2/build0004:libdeqpgles2func0004","//test/xts/acts/graphic/vkgl/src/deqpgles2/build0005:libdeqpgles2func0005","//test/xts/acts/graphic/vkgl/src/deqpgles2/build0006:libdeqpgles2func0006","//test/xts/acts/graphic/vkgl/src/deqpgles2/build0007:libdeqpgles2func0007","//test/xts/acts/graphic/vkgl/src/deqpgles2/build0008:libdeqpgles2func0008","//test/xts/acts/graphic/vkgl/src/deqpgles2/build0009:libdeqpgles2func0009","//test/xts/acts/graphic/vkgl/src/deqpgles2/build0010:libdeqpgles2func0010","//test/xts/acts/graphic/vkgl/src/deqpgles2/build0011:libdeqpgles2func0011","//test/xts/acts/graphic/vkgl/src/deqpgles2/build0012:libdeqpgles2func0012","//test/xts/acts/graphic/vkgl/src/deqpgles2/build0015:libdeqpgles2func0015","//test/xts/acts/graphic/vkgl/src/deqpgles2/build0016:libdeqpgles2func0016","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0001:libdeqpgles3func0001","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0002:libdeqpgles3func0002","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0003:libdeqpgles3func0003","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0004:libdeqpgles3func0004","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0005:libdeqpgles3func0005","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0006:libdeqpgles3func0006","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0007:libdeqpgles3func0007","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0008:libdeqpgles3func0008","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0009:libdeqpgles3func0009","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0010:libdeqpgles3func0010","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0011:libdeqpgles3func0011","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0012:libdeqpgles3func0012","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0013:libdeqpgles3func0013","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0014:libdeqpgles3func0014","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0015:libdeqpgles3func0015","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0016:libdeqpgles3func0016","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0017:libdeqpgles3func0017","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0018:libdeqpgles3func0018","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0019:libdeqpgles3func0019","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0020:libdeqpgles3func0020","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0021:libdeqpgles3func0021","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0022:libdeqpgles3func0022","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0023:libdeqpgles3func0023","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0024:libdeqpgles3func0024","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0025:libdeqpgles3func0025","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0027:libdeqpgles3func0027","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0028:libdeqpgles3func0028","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0029:libdeqpgles3func0029","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0030:libdeqpgles3func0030","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0031:libdeqpgles3func0031","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0032:libdeqpgles3func0032","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0033:libdeqpgles3func0033","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0034:libdeqpgles3func0034","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0035:libdeqpgles3func0035","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0037:libdeqpgles3func0037","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0038:libdeqpgles3func0038","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0039:libdeqpgles3func0039","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0041:libdeqpgles3func0041","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0042:libdeqpgles3func0042","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0043:libdeqpgles3func0043","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0044:libdeqpgles3func0044","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0001:libdeqpgles31func0001","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0002:libdeqpgles31func0002","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0003:libdeqpgles31func0003","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0004:libdeqpgles31func0004","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0005:libdeqpgles31func0005","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0006:libdeqpgles31func0006","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0007:libdeqpgles31func0007","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0008:libdeqpgles31func0008","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0009:libdeqpgles31func0009","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0010:libdeqpgles31func0010","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0011:libdeqpgles31func0011","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0012:libdeqpgles31func0012","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0014:libdeqpgles31func0014","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0015:libdeqpgles31func0015","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0016:libdeqpgles31func0016","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0017:libdeqpgles31func0017","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0018:libdeqpgles31func0018","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0019:libdeqpgles31func0019","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0020:libdeqpgles31func0020","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0021:libdeqpgles31func0021","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0022:libdeqpgles31func0022","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0023:libdeqpgles31func0023","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0024:libdeqpgles31func0024","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0025:libdeqpgles31func0025","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0026:libdeqpgles31func0026","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0027:libdeqpgles31func0027","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0028:libdeqpgles31func0028","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0029:libdeqpgles31func0029","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0030:libdeqpgles31func0030","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0031:libdeqpgles31func0031","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0032:libdeqpgles31func0032","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0033:libdeqpgles31func0033","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0034:libdeqpgles31func0034","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0035:libdeqpgles31func0035","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0036:libdeqpgles31func0036","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0037:libdeqpgles31func0037","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0038:libdeqpgles31func0038","//test/xts/acts/graphic/vkgl/src/khrgles2/build0001:libkhrgles2func0001","//test/xts/acts/graphic/vkgl/src/khrgles3/build0001:libkhrgles3func0001","//test/xts/acts/graphic/vkgl/src/khrgles3/build0002:libkhrgles3func0002","//test/xts/acts/graphic/vkgl/src/khrgles3/build0003:libkhrgles3func0003","//test/xts/acts/graphic/vkgl/src/khrgles3/build0005:libkhrgles3func0005","//test/xts/acts/graphic/vkgl/src/khrgles31/build0001:libkhrgles31func0001","//test/xts/acts/graphic/vkgl/src/khrgles31/build0002:libkhrgles31func0002","//test/xts/acts/graphic/vkgl/src/khrgles31/build0004:libkhrgles31func0004","//test/xts/acts/hiviewdfx/hilogtest/hilogjstest/src/main/cpp:hilogndk","//test/xts/acts/hiviewdfx/utils/native:utilskit","//third_party/flutter/build/skia:ace_fontmgr_standard","//third_party/flutter/build/skia:skia_shared","//third_party/vk-gl-cts/framework/platform/ohos/rosen_context:rosen_context","//third_party/vk-gl-cts/framework/platform:libdeqp_ohos_platform"],"external_deps_added_self_part_module": ["//build/rust/tests/test_bin_crate:test_bin_crate","//build/rust/tests/test_bindgen_test/test_for_extern_c:test_extern_c","//build/rust/tests/test_bindgen_test/test_for_h:bindgen_test_for_h","//build/rust/tests/test_bindgen_test/test_for_hello_world:bindgen_test","//build/rust/tests/test_bindgen_test/test_for_hpp:bindgen_test_hpp","//build/rust/tests/test_cdylib_crate:simple_printer_cdylib","//build/rust/tests/test_cxx:test_cxx_examp_rust","//build/rust/tests/test_cxx_rust:test_cxx_rust","//build/rust/tests/test_dylib_crate:test_dylib_crate","//build/rust/tests/test_proc_macro_crate/test_attribute_macro:test_attribute_macro","//build/rust/tests/test_proc_macro_crate/test_derive_helper_macro:test_derive_helper_macro","//build/rust/tests/test_proc_macro_crate/test_function_macro:test_function_macro","//build/rust/tests/test_rlib_crate:test_rlib_crate","//build/rust/tests/test_static_link:test_static_link","//build/rust/tests/test_staticlib_crate:simple_printer_staticlib","//drivers/hdf_core/adapter/uhdf/manager:hdf_core","//drivers/hdf_core/adapter/uhdf/platform:hdf_platform","//drivers/peripheral/codec/test/demo/adapter:codec_hdi_adapter_decode","//drivers/peripheral/codec/test/demo/adapter:codec_hdi_adapter_encode","//drivers/peripheral/codec/test/demo/v1.0:codec_decode_test_async","//drivers/peripheral/codec/test/demo/v1.0:codec_decode_test_ipc","//drivers/peripheral/codec/test/demo/v1.0:codec_encode_test_async","//drivers/peripheral/codec/test/demo/v1.0:codec_encode_test_ipc","//drivers/peripheral/codec/test/demo/v2.0:codec_hdi_omx_decode","//drivers/peripheral/codec/test/demo/v2.0:codec_hdi_omx_encode","//foundation/communication/dsoftbus/tests/sdk/transmission/integration_test:softbus_test_server","//foundation/communication/ipc/ipc/test/auxiliary/native:ipc_client_test","//foundation/communication/ipc/ipc/test/auxiliary/native:ipc_server_test","//foundation/communication/ipc/ipc/test/auxiliary/native:ipc_server_test_extra","//foundation/communication/ipc/ipc/test/auxiliary/native:ipc_test_helper","//foundation/communication/ipc/ipc/test/auxiliary/native:ipc_test_helper_extra","//test/xts/acts/arkui/ace_napi_test/entry/src/main/cpp:napitest","//test/xts/acts/multimedia/image/image_js_standard/imagePixelMapNDK/entry/src/main/cpp:ImagePixelMapNDKTest","//test/xts/acts/multimedia/image/image_js_standard/imageReceiverNDK/entry/src/main/cpp:ImageReceiverNDKTest","//test/xts/acts/multimedia/image/image_js_standard/imageColorSpaceTransfer/entry/src/main/cpp:ImageColorSpaceTransferTest","//test/xts/acts/multimedia/image/image_js_standard/image_ndk_test/entry/src/main/cpp:imagePixelmap","//third_party/libinput:libinput-third-mmi","//third_party/libinput:patch_gen_libinput-third-mmi"],"external_deps_bundle_not_add": ["//arkcompiler/toolchain/tooling/test:jsdebugtest","//arkcompiler/toolchain/tooling:libark_ecma_debugger_test","//arkcompiler/toolchain/tooling/client:libark_client","//base/security/device_security_level/oem_property/common:oem_common_obj","//base/security/device_security_level/services/common:service_common_obj","//base/security/huks/frameworks/crypto_lite/cipher:cipher_shared","//base/security/huks/frameworks/huks_standard/main/common:libhuks_common_small_static","//base/security/huks/frameworks/huks_standard/main/core:libhuks_core_small_static","//base/security/huks/frameworks/huks_standard/main/crypto_engine/mbedtls:libhuks_mbedtls_small_static","//base/security/huks/frameworks/huks_standard/main/os_dependency:libhuks_os_dependency_small_static","//base/security/huks/interfaces/inner_api/huks_lite:huks_3.0_sdk","//base/security/huks/interfaces/inner_api/huks_lite:huks_server","//base/security/huks/services/huks_standard/huks_engine/main/core:huks_engine_core_standard","//base/security/huks/services/huks_standard/huks_service/main/core:libhuks_service_core_small_static","//base/security/huks/services/huks_standard/huks_service/main/os_dependency/idl:libhuks_service_idl_small_static","//base/security/huks/services/huks_standard/huks_service/main:libhuks_service_small_static","//base/security/huks/test/unittest/huks_lite_test/common:huks_3.0_test_common","//base/security/huks/test/unittest/modify_old_version_key_test_util:huks_modify_old_version_key_util","//base/security/huks/utils/crypto_adapter:libhuks_utils_client_service_adapter_static","//base/security/huks/utils/file_operator:libhuks_utils_file_operator_static","//base/security/huks/utils/mutex:libhuks_utils_mutex_static","//base/startup/init/services/begetctl:begetctl","//base/startup/init/services/modules/seccomp:libseccomp_static","//device/board/hihope/rk3568/camera/vdi_impl/v4l2/device_manager:camera_device_manager","//device/board/hihope/rk3568/camera/vdi_impl/v4l2/driver_adapter:camera_v4l2_adapter","//device/board/hihope/rk3568/camera/vdi_impl/v4l2/metadata_manager:camera_metadata_manager","//device/board/hihope/rk3568/camera/vdi_impl/v4l2/pipeline_core:camera_ipp_algo_example","//device/board/hihope/rk3568/camera/vdi_impl/v4l2/pipeline_core:camera_pipeline_core","//device/board/hihope/rk3568/camera/vdi_impl/v4l2:camera_host_vdi_impl_1.0","//device/soc/rockchip/rk3568/hardware/codec/jpeg:libjpeg_vdi_impl","//device/soc/rockchip/rk3568/hardware/codec:libcodec_oem_interface","//device/soc/rockchip/rk3568/hardware/display:display_composer_vendor","//device/soc/rockchip/rk3568/hardware/display:display_gfx","//device/soc/rockchip/rk3568/hardware/display:libdisplay_buffer_vdi_impl","//device/soc/rockchip/rk3568/hardware/display:libdisplay_buffer_vendor","//device/soc/rockchip/rk3568/hardware/display:libdisplay_composer_vdi_impl","//device/soc/rockchip/rk3568/hardware/display:libhigbm_vendor","//device/soc/rockchip/rk3568/hardware/mpp/mpp/hdi_mpp:hdi_mpp","//device/soc/rockchip/rk3568/hardware/mpp/mpp/legacy:rockchip_vpu_src","//device/soc/rockchip/rk3568/hardware/omx_il/component/common:RkOMX_Basecomponent","//device/soc/rockchip/rk3568/hardware/omx_il/component/common:libRkOMX_Resourcemanager","//device/soc/rockchip/rk3568/hardware/omx_il/component/video/dec:libomxvpu_dec","//device/soc/rockchip/rk3568/hardware/omx_il/component/video/enc:libomxvpu_enc","//device/soc/rockchip/rk3568/hardware/omx_il/core:libOMX_Core","//device/soc/rockchip/rk3568/hardware/omx_il/libOMXPlugin:libOMX_Pluginhw","//device/soc/rockchip/rk3568/hardware/omx_il/osal:RkOMX_OSAL","//drivers/hdf_core/adapter/uhdf/platform:hdf_platform","//drivers/peripheral/input/hal:hdi_input","//drivers/peripheral/light/hal:hdi_light","//drivers/peripheral/sensor/hal:hdi_sensor","//drivers/peripheral/usb/sample/device/liteos:usb_dev_test","//drivers/peripheral/vibrator/hal:hdi_vibrator","//foundation/ability/dmsfwk/services/dtbschedmgr:distributedschedsvr","//foundation/distributedhardware/distributed_screen/services/screendemo:distributedScreenTest","//foundation/graphic/graphic_2d/rosen/samples/texgine:libskia_rs_framework","//foundation/multimedia/camera_framework/interfaces/inner_api/native/test:camera_video","//foundation/multimedia/player_framework/services/services:media_service","//foundation/window/window_manager/wmserver:libwms","//test/xts/acts/hiviewdfx/utils/native:utilskit","//test/xts/hats/hdf/display/composer/common:disp_dev_hdi_test","//third_party/libfuse:libfuse","//vendor/hihope/rk3568/bluetooth:libbt_vendor","//vendor/hihope/ipcamera/bluetooth:libbt_vendor","//vendor/hihope/ipcamera/bluetooth:libbt_vendor","//commonlibrary/c_utils/base:utils","//commonlibrary/c_utils/base:utilsbase","//third_party/f2fs-tools/fsck:fsck.f2fs","//third_party/f2fs-tools/mkfs:mkfs.f2fs","//base/startup/init/services/modules/bootevent:libbootevent_static","//base/startup/init/services/modules/init_hook:inithook","//base/startup/init/services/modules/reboot:libreboot_static","//commonlibrary/c_utils/base:utils_static_cxx_rust","//foundation/ai/intelligent_voice_framework/services/intell_voice_service:intell_voice_server","//foundation/bundlemanager/bundle_framework/interfaces/kits/js/bundlemgr:bundle","//foundation/bundlemanager/bundle_framework/interfaces/kits/js/package:package","//foundation/bundlemanager/bundle_framework/interfaces/kits/js/default_app:defaultappmanager","//foundation/bundlemanager/bundle_framework/interfaces/kits/js/installer:installer","//foundation/bundlemanager/bundle_framework/interfaces/kits/js/launchermgr:innerbundlemanager","//foundation/bundlemanager/bundle_framework/interfaces/kits/js/zip:zlib","//foundation/bundlemanager/ecological_rule_manager/services:ecologicalrulemgr_service","//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb:customtokenizer","//foundation/distributeddatamgr/kv_store/databaseutils:database_utils","//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb:distributeddb","//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/gaussdb_rd:gaussdb_rd","//foundation/distributeddatamgr/kv_store/interfaces/jskits/distributeddata:distributeddata","//foundation/distributeddatamgr/kv_store/interfaces/jskits/distributedkvstore:distributedkvstore","//foundation/multimedia/audio_framework/services/audio_policy:audio_policy_service","//foundation/multimedia/audio_framework/frameworks/native/audioutils:audio_xml_utils","//foundation/multimedia/audio_framework/services/audio_service:audio_service","//foundation/multimedia/av_session/services/session:avsession_item","//foundation/multimedia/audio_framework/services/audio_service:audio_client","//foundation/multimedia/av_session/services/session:avsession_service","//foundation/multimedia/av_codec/services/services:av_codec_service","//foundation/multimedia/av_session/services/session:avsession_cast_item","//foundation/multimedia/camera_framework/services/camera_service:camera_service","//foundation/multimedia/player_framework/services/utils:media_service_utils","//foundation/resourceschedule/background_task_mgr/interfaces/innerkits:bgtaskmgr_innerkits","//third_party/cups-filters:cupsfilters","//third_party/cups-filters:imagetoraster","//third_party/f2fs-tools/fsck:fsck.f2fs","//third_party/f2fs-tools/mkfs:mkfs.f2fs","//third_party/mindspore/mindspore-src/source/mindspore/lite:mindspore_lib","//third_party/mindspore/mindspore-src/source/mindspore/lite:mindspore_ndk","//third_party/mindspore/mindspore-src/source/mindspore/lite:mindspore_train_lib","//third_party/mindspore/mindspore-src/source/mindspore/lite/mindir:mindir_lib","//third_party/vulkan-loader:vulkan_loader","//third_party/libinput:libinput-third-mmi","//third_party/libinput:patch_gen_libinput-third-mmi","//foundation/communication/netstack/utils/napi_utils:napi_utils_static","//foundation/multimedia/audio_framework/services/audio_policy:audio_policy_service_static","//foundation/multimedia/audio_framework/services/audio_service:audio_service_static","//foundation/multimedia/av_session/services/session:avsession_cast_item_static","//foundation/multimedia/av_session/services/session:avsession_item_static","//foundation/multimedia/av_session/services/session:avsession_service_static"],"third_deps_bundle_not_add": ["//arkcompiler/toolchain/tooling:libark_ecma_debugger_test","//arkcompiler/toolchain/tooling/client:libark_client","//base/global/i18n_lite/interfaces/kits/js/builtin:nativeapi_locale_simulator","//base/global/resource_management_lite/frameworks/resmgr_lite:global_resmgr_simulator","//base/security/device_security_level/services/sa:dslm_server","//base/security/device_security_level/services/sa:service_sa_static","//base/security/huks/frameworks/crypto_lite/cipher:cipher_shared","//base/security/huks/frameworks/huks_standard/main/core:libhuks_core_small_static","//base/security/huks/frameworks/huks_standard/main/crypto_engine/mbedtls:libhuks_mbedtls_small_static","//base/security/huks/interfaces/inner_api/huks_lite:hks_compatibility_bin","//base/security/huks/interfaces/inner_api/huks_lite:huks_3.0_sdk","//base/security/huks/interfaces/inner_api/huks_lite:huks_server","//base/security/huks/utils/crypto_adapter:libhuks_utils_client_service_adapter_static","//device/board/hihope/rk3568/camera/vdi_impl/v4l2/pipeline_core:camera_pipeline_core","//device/soc/rockchip/rk3568/hardware/display:display_composer_vendor","//device/soc/rockchip/rk3568/hardware/display:libdisplay_buffer_vendor","//device/soc/rockchip/rk3568/hardware/display:libhigbm_vendor","//drivers/peripheral/codec/test/demo/adapter:codec_hdi_adapter_decode","//drivers/peripheral/codec/test/demo/adapter:codec_hdi_adapter_encode","//drivers/peripheral/codec/test/demo/v2.0:codec_hdi_omx_decode","//drivers/peripheral/codec/test/demo/v2.0:codec_hdi_omx_encode","//drivers/peripheral/input/hal:hdi_input","//drivers/peripheral/light/hal:hdi_light","//drivers/peripheral/sensor/hal:hdi_sensor","//drivers/peripheral/usb/sample/device/liteos:usb_dev_test","//drivers/peripheral/usb/sample/host/liteos_test:liteos_host_speed_test","//drivers/peripheral/vibrator/hal:hdi_vibrator","//drivers/peripheral/wlan/client:wifi_driver_client","//drivers/peripheral/wlan/hal:wifi_hal","//foundation/arkui/ace_engine_lite/frameworks/targets/simulator:ace_lite","//foundation/arkui/ui_lite/ext/ide:graphic_utils_static_ide","//foundation/arkui/ui_lite/ext/ide:ui_ide","//foundation/communication/netstack/frameworks/js/napi/http:http","//foundation/communication/netstack/utils/napi_utils:napi_utils_static","//foundation/distributeddatamgr/kv_store/kvstoremock/distributeddb:distributeddb_mock","//foundation/graphic/graphic_2d/rosen/modules/glfw_render_context:libglfw_render_context","//test/testfwk/arkxtest/uitest:uitest_addon","//test/xts/acts/graphic/vkgl/src/deqpgles2/build0001:libdeqpgles2func0001","//test/xts/acts/graphic/vkgl/src/deqpgles2/build0002:libdeqpgles2func0002","//test/xts/acts/graphic/vkgl/src/deqpgles2/build0004:libdeqpgles2func0004","//test/xts/acts/graphic/vkgl/src/deqpgles2/build0005:libdeqpgles2func0005","//test/xts/acts/graphic/vkgl/src/deqpgles2/build0006:libdeqpgles2func0006","//test/xts/acts/graphic/vkgl/src/deqpgles2/build0007:libdeqpgles2func0007","//test/xts/acts/graphic/vkgl/src/deqpgles2/build0008:libdeqpgles2func0008","//test/xts/acts/graphic/vkgl/src/deqpgles2/build0009:libdeqpgles2func0009","//test/xts/acts/graphic/vkgl/src/deqpgles2/build0010:libdeqpgles2func0010","//test/xts/acts/graphic/vkgl/src/deqpgles2/build0011:libdeqpgles2func0011","//test/xts/acts/graphic/vkgl/src/deqpgles2/build0012:libdeqpgles2func0012","//test/xts/acts/graphic/vkgl/src/deqpgles2/build0015:libdeqpgles2func0015","//test/xts/acts/graphic/vkgl/src/deqpgles2/build0016:libdeqpgles2func0016","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0001:libdeqpgles3func0001","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0002:libdeqpgles3func0002","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0003:libdeqpgles3func0003","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0004:libdeqpgles3func0004","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0005:libdeqpgles3func0005","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0006:libdeqpgles3func0006","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0007:libdeqpgles3func0007","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0008:libdeqpgles3func0008","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0009:libdeqpgles3func0009","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0010:libdeqpgles3func0010","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0011:libdeqpgles3func0011","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0012:libdeqpgles3func0012","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0013:libdeqpgles3func0013","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0014:libdeqpgles3func0014","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0015:libdeqpgles3func0015","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0016:libdeqpgles3func0016","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0017:libdeqpgles3func0017","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0018:libdeqpgles3func0018","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0019:libdeqpgles3func0019","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0020:libdeqpgles3func0020","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0021:libdeqpgles3func0021","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0022:libdeqpgles3func0022","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0023:libdeqpgles3func0023","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0024:libdeqpgles3func0024","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0025:libdeqpgles3func0025","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0027:libdeqpgles3func0027","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0028:libdeqpgles3func0028","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0029:libdeqpgles3func0029","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0030:libdeqpgles3func0030","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0031:libdeqpgles3func0031","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0032:libdeqpgles3func0032","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0033:libdeqpgles3func0033","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0034:libdeqpgles3func0034","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0035:libdeqpgles3func0035","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0037:libdeqpgles3func0037","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0038:libdeqpgles3func0038","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0039:libdeqpgles3func0039","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0041:libdeqpgles3func0041","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0042:libdeqpgles3func0042","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0043:libdeqpgles3func0043","//test/xts/acts/graphic/vkgl/src/deqpgles3/build0044:libdeqpgles3func0044","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0001:libdeqpgles31func0001","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0002:libdeqpgles31func0002","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0003:libdeqpgles31func0003","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0004:libdeqpgles31func0004","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0005:libdeqpgles31func0005","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0006:libdeqpgles31func0006","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0007:libdeqpgles31func0007","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0008:libdeqpgles31func0008","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0009:libdeqpgles31func0009","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0010:libdeqpgles31func0010","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0011:libdeqpgles31func0011","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0012:libdeqpgles31func0012","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0014:libdeqpgles31func0014","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0015:libdeqpgles31func0015","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0016:libdeqpgles31func0016","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0017:libdeqpgles31func0017","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0018:libdeqpgles31func0018","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0019:libdeqpgles31func0019","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0020:libdeqpgles31func0020","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0021:libdeqpgles31func0021","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0022:libdeqpgles31func0022","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0023:libdeqpgles31func0023","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0024:libdeqpgles31func0024","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0025:libdeqpgles31func0025","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0026:libdeqpgles31func0026","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0027:libdeqpgles31func0027","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0028:libdeqpgles31func0028","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0029:libdeqpgles31func0029","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0030:libdeqpgles31func0030","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0031:libdeqpgles31func0031","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0032:libdeqpgles31func0032","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0033:libdeqpgles31func0033","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0034:libdeqpgles31func0034","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0035:libdeqpgles31func0035","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0036:libdeqpgles31func0036","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0037:libdeqpgles31func0037","//test/xts/acts/graphic/vkgl/src/deqpgles31/build0038:libdeqpgles31func0038","//test/xts/acts/graphic/vkgl/src/khrgles2/build0001:libkhrgles2func0001","//test/xts/acts/graphic/vkgl/src/khrgles3/build0001:libkhrgles3func0001","//test/xts/acts/graphic/vkgl/src/khrgles3/build0002:libkhrgles3func0002","//test/xts/acts/graphic/vkgl/src/khrgles3/build0003:libkhrgles3func0003","//test/xts/acts/graphic/vkgl/src/khrgles3/build0005:libkhrgles3func0005","//test/xts/acts/graphic/vkgl/src/khrgles31/build0001:libkhrgles31func0001","//test/xts/acts/graphic/vkgl/src/khrgles31/build0002:libkhrgles31func0002","//test/xts/acts/graphic/vkgl/src/khrgles31/build0004:libkhrgles31func0004","//third_party/flutter/build/libpng:ace_libpng","//third_party/flutter/build/skia:ace_fontmgr_standard","//third_party/flutter/build/skia:ace_fontmgr_windows","//third_party/flutter/build/skia:ace_xml","//third_party/flutter/build/skia:skia_shared","//third_party/glslang/OGLCompilersDLL:libdeqp_OGLCompiler","//third_party/glslang/SPIRV:SPIRV_source","//third_party/glslang/SPIRV:libdeqp_spirv","//third_party/glslang/SPIRV:libdeqp_spvremapper","//third_party/glslang/glslang:MachineIndependent_source","//third_party/glslang/glslang:glslang_source","//third_party/glslang/glslang:libdeqp_GenericCodeGen","//third_party/glslang/glslang:libdeqp_MachineIndependent","//third_party/glslang/glslang:libdeqp_OSDependent","//third_party/glslang/glslang:libdeqp_glslang","//third_party/glslang/hlsl:libdeqp_hlsl","//third_party/libcoap:libcoap","//third_party/libusb:libusb","//third_party/spirv-tools/source/link:libdeqp_spirvtools-link","//third_party/spirv-tools/source/lint:libdeqp_spirvtools-lint","//third_party/spirv-tools/source/opt:libdeqp_spirvtools-opt","//third_party/spirv-tools/source/reduce:libdeqp_spirvtools-reduce","//third_party/spirv-tools:libdeqp_spirvtools","//third_party/sqlite:sqlite_sdk","//third_party/vk-gl-cts/external/openglcts/modules/common/subgroups:deqp-gl-subgroups_source","//third_party/vk-gl-cts/external/openglcts/modules/common/subgroups:libdeqp-gl-subgroups","//third_party/vk-gl-cts/external/openglcts/modules/common:glcts-common-nocontext-package_source","//third_party/vk-gl-cts/external/openglcts/modules/common:glcts-common_source","//third_party/vk-gl-cts/external/openglcts/modules/common:libdeqp_glcts-common","//third_party/vk-gl-cts/external/openglcts/modules/common:libdeqp_glcts-common-nocontext-package","//third_party/vk-gl-cts/external/openglcts/modules/gl:glcts-gl_source","//third_party/vk-gl-cts/external/openglcts/modules/gl:libdeqp_glcts-gl","//third_party/vk-gl-cts/external/openglcts/modules/gles2:glcts-es2_source","//third_party/vk-gl-cts/external/openglcts/modules/gles2:libdeqp_glcts-es2","//third_party/vk-gl-cts/external/openglcts/modules/gles31:glcts-es31_source","//third_party/vk-gl-cts/external/openglcts/modules/gles31:libdeqp_glcts-es31","//third_party/vk-gl-cts/external/openglcts/modules/gles32:glcts-es32_source","//third_party/vk-gl-cts/external/openglcts/modules/gles32:libdeqp_glcts-es32","//third_party/vk-gl-cts/external/openglcts/modules/gles3:glcts-es3_source","//third_party/vk-gl-cts/external/openglcts/modules/gles3:libdeqp_glcts-es3","//third_party/vk-gl-cts/external/openglcts/modules/glesext:glcts-esext_source","//third_party/vk-gl-cts/external/openglcts/modules/glesext:libdeqp_glcts-esext","//third_party/vk-gl-cts/external/openglcts/modules:glcts_source","//third_party/vk-gl-cts/external/openglcts/modules:libdeqp_glcts","//third_party/vk-gl-cts/external/vulkancts/framework/vulkan:deqp_vkutil_source","//third_party/vk-gl-cts/external/vulkancts/framework/vulkan:deqp_vkutilnoshader_source","//third_party/vk-gl-cts/external/vulkancts/framework/vulkan:libdeqp_vkutil","//third_party/vk-gl-cts/external/vulkancts/framework/vulkan:libdeqp_vkutilnoshader","//third_party/vk-gl-cts/framework/common:libdeqp_tcutil","//third_party/vk-gl-cts/framework/common:tcutil_source","//third_party/vk-gl-cts/framework/delibs/debase:libdeqp_debase","//third_party/vk-gl-cts/framework/delibs/decpp:deqp_delib_decpp_source","//third_party/vk-gl-cts/framework/delibs/decpp:libdeqp_decpp","//third_party/vk-gl-cts/framework/delibs/depool:deqp_delib_depool_source","//third_party/vk-gl-cts/framework/delibs/depool:libdeqp_depool","//third_party/vk-gl-cts/framework/delibs/dethread:deqp_delib_dethread_source","//third_party/vk-gl-cts/framework/delibs/dethread:libdeqp_dethread","//third_party/vk-gl-cts/framework/delibs/deutil:deqp_delib_deutil_source","//third_party/vk-gl-cts/framework/delibs/deutil:libdeqp_deutil","//third_party/vk-gl-cts/framework/egl/wrapper:eglwrapper_source","//third_party/vk-gl-cts/framework/egl/wrapper:libdeqp_eglwrapper","//third_party/vk-gl-cts/framework/egl:eglutil_source","//third_party/vk-gl-cts/framework/egl:libdeqp_eglutil","//third_party/vk-gl-cts/framework/opengl/simplereference:deqp_opengl_simplereference_source","//third_party/vk-gl-cts/framework/opengl/simplereference:libdeqp_glutil-sglr","//third_party/vk-gl-cts/framework/opengl/wrapper:deqp_opengl_wrapper_source","//third_party/vk-gl-cts/framework/opengl/wrapper:libdeqp_glwrapper","//third_party/vk-gl-cts/framework/opengl:deqp_opengl_source","//third_party/vk-gl-cts/framework/opengl:libdeqp_glutil","//third_party/vk-gl-cts/framework/platform:glcts","//third_party/vk-gl-cts/framework/platform:libdeqp_ohos_platform","//third_party/vk-gl-cts/framework/platform:libdeqp_tcutil-platform","//third_party/vk-gl-cts/framework/platform:tcutil-platform_source","//third_party/vk-gl-cts/framework/qphelper:deqp_qphelper_source","//third_party/vk-gl-cts/framework/qphelper:libdeqp_qphelper","//third_party/vk-gl-cts/framework/randomshaders:libdeqp_randomshaders","//third_party/vk-gl-cts/framework/randomshaders:randomshaders_source","//third_party/vk-gl-cts/framework/referencerenderer:libdeqp_referencerenderer","//third_party/vk-gl-cts/framework/referencerenderer:referencerenderer_source","//third_party/vk-gl-cts/framework/xexml:libdeqp_xexml","//third_party/vk-gl-cts/framework/xexml:xexml_source","//third_party/vk-gl-cts/modules/egl:deqp-egl_source","//third_party/vk-gl-cts/modules/egl:libdeqp-egl","//third_party/vk-gl-cts/modules/gles2/accuracy:deqp-gles2-accuracy_source","//third_party/vk-gl-cts/modules/gles2/accuracy:libdeqp-gles2-accuracy","//third_party/vk-gl-cts/modules/gles2/functional:deqp-gles2-functional_source","//third_party/vk-gl-cts/modules/gles2/functional:libdeqp-gles2-functional","//third_party/vk-gl-cts/modules/gles2/performance:deqp-gles2-performance_source","//third_party/vk-gl-cts/modules/gles2/performance:libdeqp-gles2-performance","//third_party/vk-gl-cts/modules/gles2/stress:deqp-gles2-stress_source","//third_party/vk-gl-cts/modules/gles2/stress:libdeqp-gles2-stress","//third_party/vk-gl-cts/modules/gles2:deqp-gles2_source","//third_party/vk-gl-cts/modules/gles2:libdeqp-gles2","//third_party/vk-gl-cts/modules/gles3/accuracy:deqp-gles3-accuracy_source","//third_party/vk-gl-cts/modules/gles3/accuracy:libdeqp-gles3-accuracy","//third_party/vk-gl-cts/modules/gles3/functional:deqp-gles3-functional_source","//third_party/vk-gl-cts/modules/gles3/functional:libdeqp-gles3-functional","//third_party/vk-gl-cts/modules/gles3/performance:deqp-gles3-performance_source","//third_party/vk-gl-cts/modules/gles3/performance:libdeqp-gles3-performance","//third_party/vk-gl-cts/modules/gles3/stress:deqp-gles3-stress_source","//third_party/vk-gl-cts/modules/gles3/stress:libdeqp-gles3-stress","//third_party/vk-gl-cts/modules/gles31/functional:deqp-gles31-functional_source","//third_party/vk-gl-cts/modules/gles31/functional:libdeqp-gles31-functional","//third_party/vk-gl-cts/modules/gles31/stress:deqp-gles31-stress_source","//third_party/vk-gl-cts/modules/gles31/stress:libdeqp-gles31-stress","//third_party/vk-gl-cts/modules/gles31:deqp-gles31_source","//third_party/vk-gl-cts/modules/gles31:libdeqp-gles31","//third_party/vk-gl-cts/modules/gles3:deqp-gles3_source","//third_party/vk-gl-cts/modules/gles3:libdeqp-gles3","//third_party/vk-gl-cts/modules/glshared:deqp-gl-shared_source","//third_party/glslang:glslang_validator","//third_party/glslang:spirv-remap","//third_party/vk-gl-cts/modules/glshared:libdeqp-gl-shared","//third_party/rust/crates/rust-openssl/openssl-sys:lib"]
}

2.1 子系统存在性验证(bundle_subsystem_error)

功能:检测子系统是否存在,确保构建过程中引用的子系统是有效的。

实现机制

  • 通过hb/service/loader.py中的compile_standard_allow_info.get方法读取out/preloader目录下的compile_standard_whitelist.json文件
  • hb/util/loader/load_ohos_build.py中遍历build_files来检查子系统名称匹配性

典型问题
当在构建过程中引用了不存在的子系统时,构建系统会报错并终止编译。例如,在RK3399平台支持中,需要在build/compile_standard_whitelist.json中添加相应白名单才能成功编译。
重要说明:白名单针对某个平台就去扫描相关目录下的组件,比如dayu210\rk3568\purple_pi_oh\2in1_core_system等,不同平台配置不会冲突,但如果该平台所需白名单配置缺项就会编译报错。

白名单示例

"bundle_subsystem_error": ["device/board/hihope/rk3568/ohos.build","vendor/hihope/ipcamera/ohos.build"
]

2.2 子系统与组件白名单(subsystem_components)

功能:定义编译相关的组件白名单,只有列入白名单的组件才能参与编译。

实现机制

  • out/{product_name}/build_configs/parts_info/part_subsystem.json中读取内容
  • 对比vendor/hihope/dayu210/config.json(产品功能配置)和仓库的bundle.json(声明所属子系统和组件)

配置要点

  • config.json定义产品需要启用的功能
  • bundle.json声明仓库所属的子系统和组件
  • 两者必须匹配,否则会报错

2.3 GN构建与子系统匹配验证(gn_part_or_subsystem_error)

功能:验证part_subsystem.json中的子系统名称与BUILD.gn中定义的子系统是否一致。

实现机制

  • 检测out/{product_name}/build_configs/parts_info/part_subsystem.json文件
  • 比对其中的subsystems_nameBUILD.gn中定义的subsystem

典型错误
当两者不匹配时,会报错"subsystem name or part name is incorrect",阻止构建继续进行。

白名单示例

"gn_part_or_subsystem_error": ["//arkcompiler/toolchain/tooling/test:debugger_entry","//device/board/hihope/rk3568/camera/vdi_impl/v4l2:camera_host_vdi_impl_1.0"
]

2.4 外部依赖模块验证(deps_added_external_part_module)

功能:验证BUILD.gn中的deps依赖是否符合规范。

实现机制

  • 检查BUILD.gn中的deps字段
  • 验证依赖关系是否合理

典型错误
当依赖存在异常时,会报错"{} depend part {}, need set part deps {} info to"和"deps validation part_name: '{}', target: '{}', dep: '{}' failed!!!"。

白名单示例

"deps_added_external_part_module": ["//arkcompiler/toolchain/inspector:ark_debugger_static","//device/soc/rockchip/rk3568/hardware/omx_il/component/common:libRkOMX_Resourcemanager"
]

2.5 外部依赖自包含验证(external_deps_added_self_part_module)

功能:验证BUILD.gn中的external_deps是否合理,防止组件内部循环依赖。

实现机制

  • 检查external_deps字段
  • 确保没有不合理的内部依赖

典型错误
当依赖异常时,会报错"{} in target {} is dependency within part {}, Need to used deps"。

白名单示例

"external_deps_added_self_part_module": ["//build/rust/tests/test_bin_crate:test_bin_crate","//drivers/hdf_core/adapter/uhdf/manager:hdf_core"
]

2.6 外部依赖缺失验证(external_deps_bundle_not_add)

功能:与external_deps_added_self_part_module功能类似,但报错信息不同。

典型错误
报错格式为"{} {}.",后跟配置文件信息。

白名单示例

"external_deps_bundle_not_add": ["//arkcompiler/toolchain/tooling/test:jsdebugtest","//base/security/huks/frameworks/huks_standard/main/core:libhuks_core_small_static"
]

2.7 第三方库依赖验证(third_deps_bundle_not_add)

功能:专门验证第三方依赖库是否在白名单中。

典型错误
当白名单中没有包含第三方依赖库时,会报错"f"{_tips_info} {part_deps_info.get('build_config_file')}."

白名单示例

"third_deps_bundle_not_add": ["//third_party/flutter/build/skia:ace_fontmgr_standard","//third_party/vk-gl-cts/framework/platform:libdeqp_ohos_platform"
]

三、白名单配置实战指南

3.1 白名单文件位置与结构

文件位置

  • 源码树中:build/compile_standard_whitelist.json
  • 构建过程中生成:out/preloader/{product_name}/compile_standard_whitelist.json

文件结构

{"bundle_subsystem_error": [...],"subsystem_components": [...],"gn_part_or_subsystem_error": [...],...
}

3.2 如何添加新的白名单条目

当需要添加新的组件或解决构建错误时,可以按照以下步骤操作:

  1. 确定错误类型:根据构建错误信息判断属于哪种类别的白名单验证问题
  2. 定位构建配置:找到相关的BUILD.gn或bundle.json文件
  3. 添加白名单条目:在build/compile_standard_whitelist.json中对应类别添加条目
  4. 重新构建验证:执行hb build确认问题是否解决

示例:添加RK3399支持时,需要在build/compile_standard_whitelist.json中添加相应白名单条目。

3.3 白名单配置最佳实践

  1. 精确匹配原则:白名单条目应尽可能精确,避免使用通配符
  2. 分类管理:按功能模块组织白名单条目,便于维护
  3. 注释说明:为每个新增条目标注原因和时间
  4. 定期清理:随着代码演进,及时清理不再需要的白名单条目
  5. 权限控制:白名单修改应经过严格审查,防止安全风险

四、常见问题与解决方案

4.1 子系统名称不匹配问题

现象:构建时出现"subsystem name or part name is incorrect"错误

原因part_subsystem.json中的子系统名称与BUILD.gn定义不一致

解决方案

  1. 检查BUILD.gn中定义的subsystem名称
  2. 确认config.json中配置的子系统
  3. gn_part_or_subsystem_error中添加对应条目

4.2 依赖关系错误

现象:出现"deps validation part_name"相关错误

原因:组件间的依赖关系不符合构建规范

解决方案

  1. 检查BUILD.gn中的deps和external_deps配置
  2. 确认依赖组件是否已在白名单中
  3. 根据错误类型在相应白名单类别中添加条目

4.3 第三方库集成问题

现象:第三方库依赖报错

原因:第三方库未被添加到third_deps_bundle_not_add白名单

解决方案

  1. 确认第三方库的路径和目标名称
  2. 在third_deps_bundle_not_add中添加完整路径
  3. 对于复杂依赖,可能需要同时添加多个相关条目

五、高级应用场景

5.1 定制化产品构建

当开发基于OpenHarmony的定制产品时,往往需要添加新的硬件适配层或专有功能模块。这些新增内容很可能触发白名单验证错误,需要针对性地添加白名单条目。

操作流程

  1. 在device或vendor目录下创建新产品配置
  2. 执行构建,记录所有白名单错误
  3. 有针对性地在build/compile_standard_whitelist.json中添加条目
  4. 重复测试直到构建成功

5.2 第三方库集成最佳实践

集成第三方库时,常遇到依赖验证问题。以集成Flutter为例:

  1. 确认需要的Flutter相关组件
  2. third_deps_bundle_not_add中添加:
    "//third_party/flutter/build/skia:ace_fontmgr_standard",
    "//third_party/flutter/build/skia:skia_shared"
    
  3. 如有必要,在deps_added_external_part_module中添加相关依赖

六、白名单机制的演进

随着OpenHarmony版本迭代,白名单机制也在不断完善:

  1. OpenHarmony 3.x:基础白名单机制建立,主要关注子系统验证
  2. OpenHarmony 4.0:增强依赖验证,细化错误分类
  3. OpenHarmony 5.0:进一步优化白名单管理,提升构建效率
  4. Openharmony6.0 :优化完善构建白名单,避免更多bug
  • 动态白名单机制,根据产品配置自动生成
  • 更智能的错误提示和自动修复建议
  • 白名单配置的可视化管理工具

七、总结

OpenHarmony的编译配置白名单机制是保障系统安全性和构建规范性的关键环节。通过深入理解七大验证类别及其工作机制,开发者可以更高效地解决构建问题,确保代码质量和系统稳定性。

在实际开发中,合理配置白名单不仅能避免构建失败,还能提升代码规范性,防止不合理的依赖关系引入系统。随着OpenHarmony生态的不断发展,掌握白名单机制将成为OpenHarmony开发者的核心技能之一。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/93639.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/93639.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

backward怎么计算的是torch.tensor(2.0, requires_grad=True)变量的梯度

import torch import torch.nn as nn import torch.optim as optim# 一个参数 w 2 w torch.tensor(2.0, requires_gradTrue) # 预测值 y_pred w * 3 # 6 # 真实值 y_true torch.tensor(10.0) # 损失 (预测 - 真实)^2 loss (y_pred - y_true) ** 2 # (6-10)^2 16loss.b…

戴永红×数图:重构零售空间价值,让陈列创造效益!

风雨同舟,智赢未来。近日,湖南戴永红商业连锁有限公司(以下简称“戴永红”)正式携手数图信息科技有限公司,全面启动“可视化品类空间管理”项目。以数图可视化陈列系统为引擎,双方将共同推进企业零售管理的…

排查Redis数据倾斜引发的性能瓶颈

以下是针对 Redis 数据倾斜问题的完整排查与优化方案,结合实战案例说明如何提升吞吐量和响应速度:一、问题现象定位1. ​性能监控异常​# Redis集群节点负载差异 $ redis-cli -c cluster nodes | grep master e1d7b... 10.0.0.1:637916379 master - 0 16…

元宇宙的硬件设备:从 VR 头显到脑机接口

1 元宇宙的主流硬件设备1.1 VR 头显:沉浸式体验的核心入口VR 头显是当前进入元宇宙最主要的硬件设备,通过封闭的显示系统为用户营造沉浸式虚拟环境。主流 VR 头显采用双屏 LCD 或 OLED 显示技术,单眼分辨率已从早期的 1080P 提升至 4K 级别&a…

具身智能2硬件架构(人形机器人)摘自Openloong社区

青龙人形机器人: 硬件 身体全身自由度43,手部自由度6*2,电池续航3h,运动控制算法(zmp/slip/mpc/深度学习)MPC+WBC+强化学习,54Tops(FP16),具有路径建图和自主导航能力,感官系统深度视觉传感器*3全景环视*1,具备语音识别与声源定位,可扩展嗅觉传感器 OpenLoong通…

JavaScript 性能优化:new Map vs Array.find() 查找速度深度对比

前言在前端开发中,我们经常需要从数据集合中查找特定元素。对于小规模数据,使用 Array.find()方法简单直接,但当数据量增大时,性能问题就会显现。本文将深入对比 Map和 Array.find()在数据查找方面的性能差异,并通过实…

栈与队列leetcode题型总结

1. 常用表格总结数据结构常见应用场景时间复杂度(入/出/查)LeetCode 高频题栈(Stack)括号匹配、单调栈、DFS入栈 O(1) / 出栈 O(1) / 查顶 O(1)20 有效的括号, 155 最小栈, 739 每日温度队列(Queue)层序遍历…

云原生俱乐部-RH124知识点总结(3)

写到这RH124的内容已经过半了,虽然内容不多,但是还是不太好写。因为简单的命令不想写,至于理解上也没什么难度,不过还是要保证整体内容的都要讲到。这篇文章就把RH124剩下的内容都完结吧,主要还剩下配置和保护SSH、管理…

安装DDNS-go

wget https://github.com/jeessy2/ddns-go/releases/download/v6.12.2/ddns-go_6.12.2_linux_x86_64.tar.gz tar zxvf ddns-go_6.12.2_linux_x86_64.tar.gz sudo ./ddns-go -s install

机器学习深度学习 所需数据的清洗实战案例 (结构清晰、万字解析、完整代码)包括机器学习方法预测缺失值的实践

矿物数据.xls矿物种类:A,B,C,D,E(其中E数据只有一条,无法用于训练,直接剔除)特征:序号 氯 钠 镁 硫 钙 钾 碳 溴 锶 pH 硼 氟 硒 矿物类型此数据有&#xff1…

从基础到架构的六层知识体系

第1层:数学与逻辑基础(The Foundation)📌 计算机技术的根源;为算法分析、密码学、AI等提供理论支撑离散数学:集合、图论、逻辑、递归线性代数:机器学习、图形学基础概率与统计:数据分…

Flask 路由与视图函数绑定机制

Flask 路由与视图函数绑定机制 核心概念 在 Flask 框架中,路由(Route) 是连接 URL 路径与 Python 函数的桥梁,通过 app.route() 装饰器实现这种绑定关系,使得当用户访问特定 URL 时,对应的函数会被自动调用…

Spring 的 setter 注入可以解决某些类型的循环依赖问题

参考:https://blog.csdn.net/weixin_50055999/article/details/147493914?utm_sourceminiapp_weixin Setter 方法注入 (Setter Injection) 在类中提供一个 setter 方法,并在该方法上使用 Autowired、Resource 等注解。 代码示例 import org.springfr…

数据结构代码分享-5 链式栈

linkstack.c#include<stdio.h> #include<stdlib.h> #include"linkstack.h" //1.创建一个空的栈 void CreateEpLinkStack(linkstack_t **ptop) {*ptop NULL; } //2.入栈,ptop是传入的栈针的地址&#xff0c;data是入栈的数据 int pushLinkStack(linkstac…

数学建模Topsis法笔记

评价决策类-Topsis法学习笔记 问题的提出 生活中我们常常要进行评价&#xff0c;上一篇中的层次分析法&#xff0c;通过确定各指标的权重&#xff0c;来进行打分&#xff0c;但层次分析法决策层不能太多&#xff0c;而且构造判断矩阵相对主观。那有没有别的方法呢&#xff1f…

石英加速度计为何成为行业标杆?

在石油钻井、航空航天、工业自动化等领域&#xff0c;高精度、高可靠性的加速度测量至关重要。ER-QA-03F系列石英挠性加速度计凭借其卓越的性能和稳定的表现&#xff0c;成为静态与动态测试的理想选择。自2012年推出以来&#xff0c;该产品已交付数千台&#xff0c;并在石油钻井…

HP Pavilion G6 笔记本使用ventoy启动安装Ubuntu 22.04 桌面版

HP Pavilion G6 笔记本是很老的笔记本了&#xff0c;淘到一款&#xff0c;成色比较新&#xff0c;使用i5 3210 M cpu &#xff0c;内存是2G*2&#xff0c;正好手边有一条4G内存条&#xff0c;替换一条后扩充为6G内存&#xff0c;感觉可以再战10年&#xff01;&#xff08;当然6…

STM32G4 Park及反Park变换(二)实验

目录 一、STM32G4 Park及反Park变换(二)实验 1 Park及反Park变换 1.1 代码 1.2 上位机实验结果 附学习参考网址 欢迎大家有问题评论交流 (* ^ ω ^) 一、STM32G4 Park及反Park变换(二)实验 1 Park及反Park变换 本文介绍了基于STM32G4的Park及反Park变换实验过程。主要内容…

pgsql 如何查询今天范围内的数据(当天0点0分0秒 - 当天23点59分59秒....)

使用 CURRENT_DATE 函数CURRENT_DATE 返回当前日期&#xff08;不含时间部分&#xff09;。当它在查询中与 timestamp 字段比较时&#xff0c;会自动被视为当天的开始&#xff0c;即 YYYY-MM-DD 00:00:00。CURRENT_DATE INTERVAL 1 day 计算出第二天的开始时间&#xff0c;即 …

DRM驱动架构浅析-上(DRM基础概要与U-Boot阶段驱动解析)

一、背景 近期项目吃紧&#xff0c;接了不少调屏相关的需求&#xff0c;期间磕磕绊绊&#xff0c;但总算完成要求。回首过往&#xff0c;调试过多种屏幕&#xff0c;包括LVDS、EDP、MIPI、MI转EDP或是转LVDS、DP以及HDMI等常见屏。在Rockchip平台调外设也有段时间矣&#xff0…