【HarmonyOS NEXT】har 包的构建天生过程
Har模块文件布局https://i-blog.csdnimg.cn/blog_migrate/05278e9ad9ffc42f0bf563028745b4eb.png
构建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配置参数。
{
"apiType": "stageMode",
"buildOption": {
},
"buildOptionSet": [
{
"name": "release",
"arkOptions": {
// 开源har相关参数
"obfuscation": {
"ruleOptions": {
// true表示进行混淆,false表示不进行混淆。默认为true
"enable": false,
]
},
// consumerFiles中指定的混淆配置文件会在构建依赖这个library的工程或library时被应用
"consumerFiles": [
"./consumer-rules.txt"
]
}
},
},
],
"targets": [
{
"name": "default"
}
]
} 2. 对于开源har,若部门工程源文件无需构建到HAR包中,可在module目录下新建.ohpmignore文件,配置打包时要忽略的文件,支持正则表达式写法。将无需打包进HAR包的文件/文件夹名称写入.ohpmignore文件中。DevEco Studio构建时将过滤掉.ohpmignore文件中所包含的文件/文件夹。
https://i-blog.csdnimg.cn/blog_migrate/6e3a45754f15a7ed6e776b0b0f66ecf1.png
3. 选中HAR模块的根目录,点击Build > Make Module '<module-name>'启动构建。
https://i-blog.csdnimg.cn/blog_migrate/6106c85f7dc64d9bca80f36c7c073926.png
4. 构建完成后,build目录下天生HAR包产物。
https://i-blog.csdnimg.cn/blog_migrate/6e731d1faf09b912bf26efb026f0f77a.png
构建闭源HAR
DevEco Studio支持闭源HAR构建,通过对代码进行编译混淆,天生闭源HAR。在不共享源码的环境下,通过闭源HAR对外提供组件、资源等,可以实现多个模块大概多个工程共享组件、资源等。
1. 新建的HAR模块在编译模式为release模式时默认为构建闭源HAR,即build-profile.json5文件中obfuscation下的enable字段为true。
{
"apiType": "stageMode",
"buildOption": {
},
"buildOptionSet": [
{
"name": "release",
"arkOptions": {
// 闭源har相关参数
"obfuscation": {
"ruleOptions": {
// true表示进行混淆,false表示不进行混淆。默认为true
"enable": true,
// 混淆规则文件
"files": [
"./obfuscation-rules.txt"
]
},
// consumerFiles中指定的混淆配置文件会在构建依赖这个library的工程或library时被应用
"consumerFiles": [
"./consumer-rules.txt"
]
}
},
},
],
"targets": [
{
"name": "default"
}
]
} 2. 选中HAR模块的根目录,点击Build > Make Module '<module-name>'启动构建。
https://i-blog.csdnimg.cn/blog_migrate/4d0b8569561a88a30f6e4c5e4b08a90f.png
3. 构建完成后,build目录下天生HAR包产物。
https://i-blog.csdnimg.cn/blog_migrate/54a40386bb3c56b064a670cc7af70286.png
根据工程特性,mgplayer_hms 采用构建闭源HAR 的方式。
模块级build-profile.json5的示比方下所示:
{
"apiType": "stageMode",//API类型,支持FA(faMode) 和 Stage(stageMode)模型
"showInServiceCenter": true,//是否在服务中心展示
"buildOption": {//配置项目在构建过程中使用的相关配置
//配置筛选har依赖.so资源文件的过滤规则
"nativeLib": {
"filter": {
//按照.so文件的优先级顺序,打包最高优先级的.so文件
"pickFirsts": [
"**/1.so"
],
//按照.so文件的优先级顺序,打包最低优先级的.so文件
"pickLasts": [
"**/2.so"
],
//排除的.so文件
"excludes": [
"**/3.so", //排除所有名称为“3”的so文件
"**/x86_64/*.so //排除所有x86_64架构的so文件
],
//允许当.so重名冲突时,使用高优先级的.so文件覆盖低优先级的.so文件
"enableOverride": true
}
},
"sourceOption": { //使用不同的标签对源代码进行分类,以便在构建过程中对不同的源代码进行不同的处理
"workers": []
},
//cpp相关编译配置
"externalNativeOptions": {
"path": "./src/main/cpp/CMakeLists.txt",//CMake配置文件,提供CMake构建脚本
"arguments": "",//传递给CMake的可选编译参数
"abiFilters": [//用于设置本机的ABI编译环境
"arm64-v8a",
"x86_64"
],
"cppFlags": ""//设置C++编译器的可选参数
},
//ArkTS编译配置
"arkOptions":{
"types":[]//配置d.ts/d.ets的相对路径或包名,用于使用自定义的声明类型
},
},
"buildOptionSet": [//buildOption的集合,
{
"name": "release",//定义buildOption的名字,取值有default、debug 和 release,也可自定义
"arkOptions": {
"obfuscation": {//针对release模式下的配置
"ruleOptions": {
"enable": true, // 默认为true
"files": [ //混淆文件的相对路径
"./obfuscation-rules.txt"
]
},
"consumerFiles": './consumer-rules.txt' //仅Static Library模块可配置:默认导出的混淆规则
}
},
"debuggable": true,//定义编译模式是否为debug
"copyFrom": "release",//从指定的buildOption中复制相关配置
"resOptions": {},
//cpp相关编译配置
"externalNativeOptions": {
"path": "./src/main/cpp/CMakeLists.txt",//CMake配置文件,提供CMake构建脚本
"arguments": "",//传递给CMake的可选编译参数
"abiFilters": [//用于设置本机的ABI编译环境
"arm64-v8a",
"x86_64"
],
"cppFlags": ""//设置C++编译器的可选参数
},
"sourceOption": { //使用不同的标签对源代码进行分类,以便在构建过程中对不同的源代码进行不同的处理
"workers": []
},
//配置筛选har依赖.so资源文件的过滤规则
"nativeLib": {
"filter": {
//按照.so文件的优先级顺序,打包最高优先级的.so文件
"pickFirsts": [
"**/1.so"
],
//按照.so文件的优先级顺序,打包最低优先级的.so文件
"pickLasts": [
"**/2.so"
],
//排除的.so文件
"excludes": [
"**/3.so"
],
//允许当.so重名冲突时,使用高优先级的.so文件覆盖低优先级的.so文件
"enableOverride": true
}
},
}
],
"buildModeBinder": [ //构建模式与构建配置的关联配置,通过该配置可以将不同的构建配置和target进行组合,并绑定到对应的构建模式上,其中构建模式需要在工程级别的构建模式列表中
{
"buildModeName": "debug",
"mappings": [ //构建模式绑定中的具体映射表,描述的是target和构建配置的一对一的关系
{
"targetName": "default",
"buildOptionName": "release"
}
]
}
],
"targets": [//定义的target,开发者可以定制不同的target,具体请参考配置多目标构建产物章节
{
"name": "default",
},
{
"name": "ohosTest",
}
]
}
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]