• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# hap的编译
2
3## 术语
4
5gn 目标:
6
7## hap包的构成
8
9OpenHamony上的hap包由资源,raw assets,js assets,native库,config.json等部分构成。
10
11
12## 编译系统提供的模板
13
14编译系统提供了ohos_hap模板,用来编译hap包。
15
16模板集成在ohos.gni中,使用之前需要引用build/ohos.gni
17
18### ohos_hap
19
20- 声明一个hap目标,该目标会生成一个hap包,最终将会打包到system镜像中
21
22- 支持的变量:
23
24  1.  hap_profile: hap包的config.json
25
26  2. raw_assets: 原始assets,这些assets会直接拷贝到hap包的assets目录下
27
28  3. resources: 资源文件,编译后放置在assets/entry/resources目录下
29
30  4. js_assets: js资源,ace编译后放置在assets/js/default目录下
31
32  5. deps: 当前目标的依赖
33
34  6. shared_libraries: 当前目标依赖的native库
35
36  7. hap_name: hap包的名字,可选,默认为目标名
37
38  8. final_hap_path: 用户可以制定生成的hap的位置,可选,final_hap_path中会覆盖hap_name
39
40  9. subsystem_name: hap包从属的子系统名,需要和ohos.build中的名字对应,否则将导致无法安装到system镜像中
41
42  10. part_name: hap包从属的部件名,同subsystem_name
43
44  11. js2abc: 是否需要将该hap包转换为ARK的字节码
45
46      签名篇见:https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/quick-start/configuring-openharmony-app-signature.md
47
48  12. certificate_profile: hap对应的授权文件,用于签名
49
50  13. certificate_file: 证书文件,证书文件和授权文件,应用开发者需要去openharmony官网申请
51
52  14. keystore_path: keystore文件,用于签名
53
54  15. keystore_password: keystore的密码,用于签名
55
56  16. key_alias: key的别名
57
58  17. module_install_name:安装时的hap包名称
59
60  18. module_install_dir: 安装到system中的位置,默认安装在system/app目录下
61
62## 一个例子
63
64```json
65import("//build/ohos.gni") # 引用ohos.gni
66
67ohos_hap("clock") {
68  hap_profile = "./src/main/config.json" # config.json
69  js_assets = ["./src/main/js/default"]
70  raw_assets = ["./raw_assets"]
71  resources = ["./src/main/resources"]
72  shared_libraries = [
73    "//third_party/libpng:libpng", # native库
74  ]
75  certificate_profile = "../signature/systemui.p7b" # Cer文件
76  hap_name = "SystemUI-NavigationBar" # 名字
77  part_name = "prebuilt_hap"
78  subsystem_name = "applications"
79}
80```
81
82### hap解压视图
83
84```
85  Length      Date    Time    Name
86---------  ---------- -----   ----
87     1439  2009-01-01 00:00   assets/raw_assets                                 -----> raw_assets
88      354  2009-01-01 00:00   assets/entry/resources.index                      ------> resources
89        1  2009-01-01 00:00   assets/entry/resources/base/media/attributes.key  ------> resources
90        1  2009-01-01 00:00   assets/entry/resources/base/media/constants.key   ------> resources
91        1  2009-01-01 00:00   assets/entry/resources/base/media/contents.key    ------> resources
92     6790  2009-01-01 00:00   assets/entry/resources/base/media/icon.png        ------> resources
93        1  2009-01-01 00:00   assets/entry/resources/base/media/nodes.key       ------> resources
94    11170  2009-01-01 00:00   assets/js/default/app.js                          ------> js_assets
95       48  2009-01-01 00:00   assets/js/default/i18n/en-US.json                 ------> js_assets
96       50  2009-01-01 00:00   assets/js/default/i18n/zh-CN.json                 ------> js_assets
97      224  2009-01-01 00:00   assets/js/default/manifest.json                   ------> js_assets
98    41481  2009-01-01 00:00   assets/js/default/pages/index/index.js            ------> js_assets
99      909  2009-01-01 00:00   config.json                                       ------> hap_profile
100   266248  2009-01-01 00:00   libs/libpng.z.so                                  ------> shared_libraries
101
102```
103
104