当前位置:   article > 正文

【HarmonyOS NEXT】har 包的构建生成过程_鸿蒙构建har包

鸿蒙构建har包

Har模块文件结构

构建HAR

打包规则

  • 开源HAR除了默认不需要打包的文件(build、node_modules、oh_modules、.cxx、.previewer、.hvigor、.gitignore、.ohpmignore)和.gitignore/.ohpmignore中配置的文件,cpp工程的CMakeLists.txt,buildProfile.json5文件中配置的混淆相关文件,其余文件都会被打进HAR包中。
  • 闭源HAR只会将特定的文件(资源文件、配置文件、编译过程中使用的ets文件、readme和changelog等声明文件、license等证书文件)打包HAR包中。

构建开源HAR

1. 修改新建HAR模块时生成的build-profile.json5默认模板,将obfuscation下的enable字段改为false或删除整个obfuscation配置参数。

  1. {
  2. "apiType": "stageMode",
  3. "buildOption": {
  4. },
  5. "buildOptionSet": [
  6. {
  7. "name": "release",
  8. "arkOptions": {
  9. // 开源har相关参数
  10. "obfuscation": {
  11. "ruleOptions": {
  12. // true表示进行混淆,false表示不进行混淆。默认为true
  13. "enable": false,
  14. ]
  15. },
  16. // consumerFiles中指定的混淆配置文件会在构建依赖这个library的工程或library时被应用
  17. "consumerFiles": [
  18. "./consumer-rules.txt"
  19. ]
  20. }
  21. },
  22. },
  23. ],
  24. "targets": [
  25. {
  26. "name": "default"
  27. }
  28. ]
  29. }

2. 对于开源har,若部分工程源文件无需构建到HAR包中,可在module目录下新建.ohpmignore文件,配置打包时要忽略的文件,支持正则表达式写法。将无需打包进HAR包的文件/文件夹名称写入.ohpmignore文件中。DevEco Studio构建时将过滤掉.ohpmignore文件中所包含的文件/文件夹。

3. 选中HAR模块的根目录,点击Build > Make Module '<module-name>'启动构建。

4. 构建完成后,build目录下生成HAR包产物。

构建闭源HAR

DevEco Studio支持闭源HAR构建,通过对代码进行编译混淆,生成闭源HAR。在不共享源码的情况下,通过闭源HAR对外提供组件、资源等,可以实现多个模块或者多个工程共享组件、资源等。

 1. 新建的HAR模块在编译模式为release模式时默认为构建闭源HAR,即build-profile.json5文件中obfuscation下的enable字段为true。

  1. {
  2. "apiType": "stageMode",
  3. "buildOption": {
  4. },
  5. "buildOptionSet": [
  6. {
  7. "name": "release",
  8. "arkOptions": {
  9. // 闭源har相关参数
  10. "obfuscation": {
  11. "ruleOptions": {
  12. // true表示进行混淆,false表示不进行混淆。默认为true
  13. "enable": true,
  14. // 混淆规则文件
  15. "files": [
  16. "./obfuscation-rules.txt"
  17. ]
  18. },
  19. // consumerFiles中指定的混淆配置文件会在构建依赖这个library的工程或library时被应用
  20. "consumerFiles": [
  21. "./consumer-rules.txt"
  22. ]
  23. }
  24. },
  25. },
  26. ],
  27. "targets": [
  28. {
  29. "name": "default"
  30. }
  31. ]
  32. }

2. 选中HAR模块的根目录,点击Build > Make Module '<module-name>'启动构建。

3. 构建完成后,build目录下生成HAR包产物。

根据工程特性,mgplayer_hms 采用构建闭源HAR 的方式。

模块级build-profile.json5的示例如下所示:

  1. {
  2. "apiType": "stageMode", //API类型,支持FA(faMode) 和 Stage(stageMode)模型
  3. "showInServiceCenter": true, //是否在服务中心展示
  4. "buildOption": { //配置项目在构建过程中使用的相关配置
  5. //配置筛选har依赖.so资源文件的过滤规则
  6. "nativeLib": {
  7. "filter": {
  8. //按照.so文件的优先级顺序,打包最高优先级的.so文件
  9. "pickFirsts": [
  10. "**/1.so"
  11. ],
  12. //按照.so文件的优先级顺序,打包最低优先级的.so文件
  13. "pickLasts": [
  14. "**/2.so"
  15. ],
  16. //排除的.so文件
  17. "excludes": [
  18. "**/3.so", //排除所有名称为“3”的so文件
  19. "**/x86_64/*.so //排除所有x86_64架构的so文件
  20. ],
  21. //允许当.so重名冲突时,使用高优先级的.so文件覆盖低优先级的.so文件
  22. "enableOverride": true
  23. }
  24. },
  25. "sourceOption": { //使用不同的标签对源代码进行分类,以便在构建过程中对不同的源代码进行不同的处理
  26. "workers": []
  27. },
  28. //cpp相关编译配置
  29. "externalNativeOptions": {
  30. "path": "./src/main/cpp/CMakeLists.txt", //CMake配置文件,提供CMake构建脚本
  31. "arguments": "", //传递给CMake的可选编译参数
  32. "abiFilters": [ //用于设置本机的ABI编译环境
  33. "arm64-v8a",
  34. "x86_64"
  35. ],
  36. "cppFlags": "" //设置C++编译器的可选参数
  37. },
  38. //ArkTS编译配置
  39. "arkOptions":{
  40. "types":[] //配置d.ts/d.ets的相对路径或包名,用于使用自定义的声明类型
  41. },
  42. },
  43. "buildOptionSet": [ //buildOption的集合,
  44. {
  45. "name": "release", //定义buildOption的名字,取值有default、debug 和 release,也可自定义
  46. "arkOptions": {
  47. "obfuscation": { //针对release模式下的配置
  48. "ruleOptions": {
  49. "enable": true, // 默认为true
  50. "files": [ //混淆文件的相对路径
  51. "./obfuscation-rules.txt"
  52. ]
  53. },
  54. "consumerFiles": './consumer-rules.txt' //仅Static Library模块可配置:默认导出的混淆规则
  55. }
  56. },
  57. "debuggable": true, //定义编译模式是否为debug
  58. "copyFrom": "release", //从指定的buildOption中复制相关配置
  59. "resOptions": {},
  60. //cpp相关编译配置
  61. "externalNativeOptions": {
  62. "path": "./src/main/cpp/CMakeLists.txt", //CMake配置文件,提供CMake构建脚本
  63. "arguments": "", //传递给CMake的可选编译参数
  64. "abiFilters": [ //用于设置本机的ABI编译环境
  65. "arm64-v8a",
  66. "x86_64"
  67. ],
  68. "cppFlags": "" //设置C++编译器的可选参数
  69. },
  70. "sourceOption": { //使用不同的标签对源代码进行分类,以便在构建过程中对不同的源代码进行不同的处理
  71. "workers": []
  72. },
  73. //配置筛选har依赖.so资源文件的过滤规则
  74. "nativeLib": {
  75. "filter": {
  76. //按照.so文件的优先级顺序,打包最高优先级的.so文件
  77. "pickFirsts": [
  78. "**/1.so"
  79. ],
  80. //按照.so文件的优先级顺序,打包最低优先级的.so文件
  81. "pickLasts": [
  82. "**/2.so"
  83. ],
  84. //排除的.so文件
  85. "excludes": [
  86. "**/3.so"
  87. ],
  88. //允许当.so重名冲突时,使用高优先级的.so文件覆盖低优先级的.so文件
  89. "enableOverride": true
  90. }
  91. },
  92. }
  93. ],
  94. "buildModeBinder": [ //构建模式与构建配置的关联配置,通过该配置可以将不同的构建配置和target进行组合,并绑定到对应的构建模式上,其中构建模式需要在工程级别的构建模式列表中
  95. {
  96. "buildModeName": "debug",
  97. "mappings": [ //构建模式绑定中的具体映射表,描述的是target和构建配置的一对一的关系
  98. {
  99. "targetName": "default",
  100. "buildOptionName": "release"
  101. }
  102. ]
  103. }
  104. ],
  105. "targets": [ //定义的target,开发者可以定制不同的target,具体请参考配置多目标构建产物章节
  106. {
  107. "name": "default",
  108. },
  109. {
  110. "name": "ohosTest",
  111. }
  112. ]
  113. }

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号