同步操作将从 OpenHarmony/docs 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
/build # 编译构建主目录
├── config # 编译相关的配置项
├── core
│ └── gn # 编译入口BUILD.gn配置
├── loader # 各个组件配置加载、模板生成
├── ohos # OpenHarmony编译打包流程配置
│ ├── kits # kits编译打包模板和处理流程
│ ├── ndk # ndk模板和处理流程
│ ├── notice # notice模板和处理流程
│ ├── packages # 版本打包模板和处理流程
│ ├── sa_profile # sa模板和处理流程
│ ├── sdk # sdk模板和处理流程,包括sdk中包含的模块配置
│ └── testfwk # 测试相关的处理
├── scripts # 编译相关的python脚本
├── templates # c/c++编译模板定义
└── toolchain # 编译工具链配置
代码根目录下执行全量版本的编译命令:
./build.sh --product-name {product_name}
{product_name}为当前版本支持的平台。比如:Hi3516DV300等。
编译完成后,结果镜像保存在 out/ohos-arm-release/packages/phone/images/ 目录下。
编译命令支持选项:
--product-name # 必须 编译的产品名称,如:Hi3516DV300
--build-target # 可选 指定编译目标,可以指定多个
--gn-args # 可选 gn参数,支持指定多个
--ccache # 可选 编译使用ccache,需要本地安装ccache
添加组件。
本节以添加一个自定义的组件为例,描述如何编译组件,编译库、编译可执行文件等。
示例组件partA由feature1、feature2和feature3组成,feature1的编译目标为一个动态库,feature2的目标为一个可执行程序,feature3的目标为一个etc配置文件。
示例组件partA的配置需要添加到一个子系统中,本次示例将添加到subsystem_examples子系统中(subsystem_examples子系统定义在test/examples/目录)。
示例组件partA的完整目录结构如下:
test/examples/partA
├── feature1
│ ├── BUILD.gn
│ ├── include
│ │ └── helloworld1.h
│ └── src
│ └── helloworld1.cpp
├── feature2
│ ├── BUILD.gn
│ ├── include
│ │ └── helloworld2.h
│ └── src
│ └── helloworld2.cpp
└── feature3
├── BUILD.gn
└── src
└── config.conf
示例1:编写动态库gn脚本test/examples/partA/feature1/BUILD.gn,示例如下:
config("helloworld_lib_config") {
include_dirs = [ "include" ]
}
ohos_shared_library("helloworld_lib") {
sources = [
"include/helloworld1.h",
"src/helloworld1.cpp",
]
public_configs = [ ":helloworld_lib_config" ]
part_name = "partA"
}
示例2:编写可执行文件gn脚本test/examples/partA/feature2/BUILD.gn,示例如下:
ohos_executable("helloworld_bin") {
sources = [
"src/helloworld2.cpp"
]
include_dirs = [ "include" ]
deps = [ # 依赖组件内模块
"../feature1:helloworld_lib"
]
external_deps = [ "partB:module1" ] # (可选)如果有跨组件的依赖,格式为“组件名:模块名”
install_enable = true # 可执行程序缺省不安装,需要安装时需要指定
part_name = "partA"
}
示例3:编写etc模块gn脚本test/examples/partA/feature3/BUILD.gn,示例如下:
ohos_prebuilt_etc("feature3_etc") {
source = "src/config.conf"
relative_install_dir = "init" #可选,模块安装相对路径,相对于默认安装路径;默认在/system/etc目录
part_name = "partA"
}
示例4:在子系统的ohos.build中添加组件配置:test/examples/ohos.build。每个子系统有一个ohos.build配置文件,在子系统的根目录下。示例如下:
"partA": {
"module_list": [
"//test/examples/partA/feature1:helloworld_lib",
"//test/examples/partA/feature2:helloworld_bin",
"//test/examples/partA/feature3:feature3_etc",
],
"inner_kits": [
],
"system_kits": [
],
"test_list": [
]
}
一个组件包含module_list、inner_kits、system_kits、test_list四个部分的声明,其中:
将组件添加到产品配置中。
在产品的配置中添加组件,产品对应的配置文件:productdefine/common/products/{product-name}.json。
在产品配置文件中添加 "subsystem_examples:partA",表示该产品中会编译并打包partA到版本中。
编译。
以编译Hi3516DV300为例,编译命令如下:
./build.sh --product-name Hi3516DV300 --ccache
编译输出。
编译所生成的文件都归档在out/ohos-arm-release/目录下,结果镜像输出在 out/ohos-arm-release/packages/phone/images/ 目录下。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。