同步操作将从 OpenHarmony/build 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
要添加的模块可以分为以下三种情况,对原有的配置文件进行不同程度的修改。
在模块目录下配置BUILD.gn,根据类型选择对应的模板。
支持的模板类型:
ohos_executable
ohos_shared_library
ohos_static_library
ohos_source_set
# 预编译模板:
ohos_prebuilt_executable
ohos_prebuilt_shared_library
ohos_prebuilt_etc
例子:
ohos_shared_library示例
import("//build/ohos.gni")
ohos_shared_library("helloworld") {
sources = []
include_dirs = []
cflags = []
cflags_c = []
cflags_cc = []
ldflags = []
configs = []
deps =[] # 部件内模块依赖
# 跨部件模块依赖定义,
# 定义格式为 "部件名:模块名称"
# 这里依赖的模块必须是依赖的部件声明在inner_kits中的模块
external_deps = [
"part_name:module_name",
]
output_name = "" # 可选,模块输出名
output_extension = "" # 可选,模块名后缀
module_install_dir = "" # 可选,缺省在/system/lib64或/system/lib下, 模块安装路径,模块安装路径,从system/,vendor/后开始指定
relative_install_dir = "" # 可选,模块安装相对路径,相对于/system/lib64或/system/lib;如果有module_install_dir配置时,该配置不生效
part_name = "" # 必选,所属部件名称
}
ohos_executable示例:
ohos_executable模板属性和ohos_shared_library基本一致
注意:可执行模块(即ohos_executable模板定义的)默认是不安装的,如果要安装,需要指定install_enable = true
ohos_prebuilt_etc示例:
import("//build/ohos.gni")
ohos_prebuilt_etc("etc_file") {
source = "file"
deps = [] # 部件内模块依赖
module_install_dir = "" # 可选,模块安装路径,从system/,vendor/后开始指定
relative_install_dir = "" # 可选,模块安装相对路径,相对于system/etc;如果有module_install_dir配置时,该配置不生效
part_name = "" # 必选,所属部件名称
}
修改包含该模块所属部件的ohos.build配置文件
以下是一个ohos.build文件
{
"subsystem": "arkui",
"parts": {
"napi": {
"module_list": [
"//foundation/arkui/napi:napi_packages"
],
"inner_kits": [
],
"test_list": [
"//foundation/arkui/napi:napi_packages_test",
"//foundation/arkui/napi/test/unittest:unittest"
]
}
}
}
文件说明:
subsystem定义了子系统的名称;parts定义了子系统包含的部件。
一个部件包含部件名,部件包含的模块module_list,部件提供给其它部件的接口inner_kits,部件的测试用例test_list。
修改内容:
要添加一个模块到已有部件中去,只需要在该部件的module_list中添加新加模块的gn编译目标;假如该模块提供给其它模块接口,需要在inner_kits中添加对应的配置;如果有该模块的测试用例,需要添加到test_list中去。
在模块目录下配置BUILD.gn,根据类型选择对应的模板。
这一步与在原有部件中添加一个模块的方法基本一致,只需注意该模块对应BUILD.gn文件中的part_name为新建部件的名称即可。
修改或者新建ohos.build配置文件
{
"subsystem": "子系统名",
"parts": {
"新建部件名": {
"module_list": [
"部件包含模块的gn目标"
],
"inner_kits": [
],
"test_list": [
"测试用例",
]
}
}
}
在原有子系统中添加一个新的部件,有两种方法,一种是在该子系统原有的ohos.build文件中添加该部件,另一种是新建一个ohos.build文件,注意无论哪种方式该ohos.build文件均在对应子系统所在文件夹下。
ohos.build文件包含两个部分,第一部分subsystem说明了子系统的名称,parts定义了该子系统包含的部件,要添加一个部件,需要把该部件对应的内容添加进parts中去。添加的时候需要指明该部件包含的模块module_list,假如有提供给其它部件的接口,需要在inner_kits中说明,假如有测试用例,需要在test_list中说明,inner_kits与test_list没有也可以不添加。
在productdefine/common/products目录下的产品配置文件(json格式)中添加对应的部件,直接添加到原有部件后即可。
{
"parts":{
"部件所属子系统名:部件名":{}
}
}
在模块目录下配置BUILD.gn,根据类型选择对应的模板。这一步与新建部件并在其中添加模块中对应的步骤并无区别。
在新建的子系统目录下每个部件对应的文件夹下创建ohos.build文件,定义部件信息。这一步与新建部件并在其中添加模块中对应的步骤并无区别。
修改build目录下的subsystem_config.json文件
{
"子系统名": {
"path": "子系统目录",
"name": "子系统名",
...
}
}
该文件定义了有哪些子系统以及这些子系统所在文件夹路径,添加子系统时需要说明子系统path与name,分别表示子系统路径和子系统名。
在productdefine/common/products目录下的产品配置如Hi3516DV300.json中添加对应的部件,直接添加到原有部件后即可。
{
...
"parts":{
"部件所属子系统名:部件名":{}
}
}
成功添加验证:
鸿蒙操作系统的配置文件主要有四个
productdefine/common/products目录下的产品名.json文件
{
"product_name": "Hi3516DV300",
"product_company": "hisilicon",
"product_device": "hi3516dv300",
"version": "2.0",
"type": "standard",
"parts":{
"arkui:ace_engine_standard":{},
"arkui:napi":{},
"account:os_account":{},
"distributeddatamgr:native_appdatamgr":{},
"distributeddatamgr:distributeddatamgr":{},
"distributeddatamgr:appdatamgr_jskits":{}
}
}
指明了产品名,产品厂商,产品设备,版本,要编译的系统类型,以及产品包含的部件。
build目录下的subsystem_config.json文件
{
"arkui": {
"project": "hmf/ace",
"path": "foundation/arkui",
"name": "arkui",
"dir": "foundation"
}
}
该文件对子系统进行了说明,我们需要该子系统定义中的name与path,分别表示子系统的名称和所在文件夹路径。
子系统中ohos.build文件
{
"subsystem": "arkui",
"parts": {
"napi": {
"module_list": [
"//foundation/arkui/napi:napi_packages"
],
"inner_kits": [
],
"test_list": [
"//foundation/arkui/napi:napi_packages_test",
"//foundation/arkui/napi/test/unittest:unittest"
]
}
}
}
ohos.build文件定义了子系统包含的部件。
每个部件定义它所包含的模块目标module_list,以及部件间交互的接口inner_kits,测试用例test_list。部件包含的模块目标module_list是必须要说明的。
每个模块对应的BUILD.gn文件
可以使用提供的模板,也可以使用gn语法规则自定义编写。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。