This commit is contained in:
2024-09-27 19:16:49 +08:00
commit 49d0cea04d
10000 changed files with 1616312 additions and 0 deletions

View File

@@ -0,0 +1,73 @@
# ChipsetSDK白名单规则说明
## 1. Chipset SDK的定义
系统组件模块安装到system.img中的模块与芯片和硬件无关。
芯片组件模块安装到chipset.img中的模块与芯片或硬件强相关。
Chipset SDK是指允许被芯片组件模块依赖的系统组件动态库模块集合。
Chipset SDK集合中的单个模块称之为ChipsetSDK模块。
## 2. 规则解释
Chipset SDK白名单规则有几个方面的含义
### 2.1 Chipset SDK模块需要在编译模板中标识
如下图所示每个Chipset SDK模块需要在对应的BUILD.gn中通过innerapi_tags增加chipsetsdk标签来标识其类型
```go
ohos_shared_library(sample_sa_module) {
...
innerapi_tags = [ "chipsetsdk" ]
...
}
```
如果没有此标记,编译时会提示如下类型的告警:
```shell
[WARNING]: Chipset SDK module libinit_stub_empty.so has no innerapi_tags with "chipsetsdk" or "csdk", add it in //base/startup/init/interfaces/innerkits/init_module_engine:libinit_stub_empty
```
同样非Chipset SDK不要增加此标记。
### 2.2 芯片组件模块不允许依赖Chipset SDK集合之外的模块
违法此规则时会产生如下格式的NOT ALLOWED错误
```
[NOT ALLOWED]: chipset module libNNN.z.so depends on non Chipset SDK module libsystemMMM.z.so in //NNNpath:libNNN
```
该错误的含义是芯片组件的libNNN.z.so模块依赖了libsystemMMM.z.so而libsystemMMM.z.so并不是被认可白名单中的模块。
违法此规则时,参考下一章节的处理方案进行消除:
## 3. 违规场景及处理方案建议
### 3.1 检查违规模块的安装组件是否正确
首先确认libNNN.z.so是否应该是芯片组件产物只有与硬件相关的HDI实现模块才需要安装到芯片组件。
如下所示每个模块是通过install_images选项来决定安装到系统组件还是芯片组件如果系统组件模块错误的安装到芯片组件可能会因为该模块依赖了Chipset SDK之外的系统组件模块而违反此规则。
```go
ohos_shared_library(libNNN) {
...
install_images = [ chipset_base_dir ]
...
}
```
因此首先需要检查违规模块是否安装到了错误的组件如果libNNN.z.so不是芯片组件的产物则install_images里不能填chipset_base_dir删除install_images后默认就是安装到系统组件。
### 3.2 申请新的Chipset SDK模块
如果经过分析芯片组件的libNNN.z.so确实需要引入新的Chipset SDK模块可向架构SIG申请加入Chipset SDK白名单。

View File

@@ -0,0 +1,90 @@
[
"libc.so",
"libc++.so",
"liblog.so",
"libhilog.so",
"libhilog_ndk.z.so",
"libhitrace_ndk.z.so",
"libohaudio.so",
"libhisysevent.z.so",
"libhicollie.z.so",
"libservice_checker.z.so",
"libbegetutil.z.so",
"libbeget_proxy.z.so",
"libutils.z.so",
"libsec_shared.z.so",
"libhdi.z.so",
"libpub_utils.z.so",
"libhdf_ipc_adapter.z.so",
"libipc_single.z.so",
"libdisplay_gralloc.z.so",
"libhdifd_parcelable.z.so",
"libconfigpolicy_util.z.so",
"libpixelmap_ndk.z.so",
"libimage_ndk.z.so",
"libimage_receiver_ndk.z.so",
"libimage_source_ndk.z.so",
"libstd.dylib.so",
"libmindspore_lite_ndk.so",
// Third party libraries
"libdrm.so",
"libpng.z.so",
"libxml2.z.so",
"libexif.z.so",
"libcjson.z.so",
"libjsoncpp.z.so",
"libnl_share.z.so",
"libprotobuf.z.so",
"libshared_libz.z.so",
"libcrypto_openssl.z.so",
"libcrypto_openssl.so",
"libunwind.z.so",
"libudev.z.so",
"libsurface.z.so",
"libsamgr_proxy.z.so",
"libhril_innerkits.z.so",
"libpower_proxy_1.0.z.so",
"libbuffer_producer_sequenceable_1.0.z.so",
"libbuffer_handle_sequenceable_1.0.z.so",
"libohosffmpeg.z.so",
// To be optimized
"libprotobuf_lite.z.so",
"libdmabufheap.z.so",
"libtinyxml2.z.so",
"libgralloc_priv.z.so",
"libsync_fence.z.so",
// chipset modules can be depended by system directly
"libosalbase.z.so",
"libmetadata.z.so",
"libdisplay_device.z.so",
"libdisplay_layer.z.so",
"libdispdev.z.so",
"libproperty.z.so",
"libhril_innerkits_ext.z.so",
"libhdi_input.z.so",
"libhitrace_meter.so",
"libmapper_service_1.0.z.so",
"libinput_interfaces_service_1.0.z.so",
"libhdf_utils.z.so",
"libdisplay_buffer_vdi_impl.z.so",
"libdisplay_buffer_vendor.z.so",
"libcodec_hdi_omx_callback_type_service_impl.z.so",
// by libdisplay_layer_video.z.so for hispark taurus platform
"libhdi_video_layer_client.z.so",
// by libwpa.z.so for hispark taurus platform
"libwifi_driver_client.z.so",
"libipc_core.z.so",
"librtg_interface.z.so",
"libconcurrent_task_client.z.so",
"libffrt.z.so",
"libbtcommon.z.so"
]