鸿蒙NEXT开发【配置文件说明build-profile.json5】DevEco Studio编译构建

build-profile.json5文件分为工程级与模块级,其中buildOption在工程级文件和模块级文件均可配置,其中相同字段以模块级的字段为准,不同字段模块级的buildOption配置会继承工程级配置。

工程级

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

工程级build-profile.json5的示例如下所示:

{
  "app": { 
    //工程的签名信息,可包含多个签名信息
    "signingConfigs": [  
      {
        "name": "default",  //标识签名方案的名称,用户可自定义
        "type": "HarmonyOS",  //标识 HarmonyOS 应用
        //该方案的签名材料
        "material": {  
          "certpath": "D:\\SigningConfig\\debug_hos.cer",  //调试或发布证书文件,格式为.cer
          "storePassword": "******",  //密钥库密码,以密文形式呈现
          "keyAlias": "debugKey",  //密钥别名信息
          "keyPassword": "******",  //密钥密码,以密文形式呈现
          "profile": "D:\\SigningConfig\\debug_hos.p7b",  //调试或发布证书 Profile文件,格式为.p7b 
          "signAlg": "SHA256withECDSA",  //密钥库signAlg参数
          "storeFile": "D:\\SigningConfig\\debug_hos.p12"  //密钥库文件,格式为.p12
        }
      }
    ],
    //定义构建的产品品类,如通用默认版、付费版、免费版等
    "products": [  
      {
        "name": "default",  //定义产品的名称,支持定制多product目标产物
        "signingConfig": "default",  //指定当前产品品类对应的签名信息,签名信息需要在signingConfigs中进行定义
        "compatibleSdkVersion": "5.0.0(12)",  //指定应用/服务兼容的最低版本
        "targetSdkVersion": "5.0.0(12)",  //指定应用/服务目标版本
        "runtimeOS": "HarmonyOS",  //指定为HarmonyOS
      }
    ],
    // 构建模式的集合,每个构建模式是指在执行不同target任务时使用何种构建配置的一套方案,默认打包hap时使用debug,打包app时使用release
    "buildModeSet": [
      {
        "name": "debug",   //定义构建模式的类型名称,系统默认给出test、debug和release,用户也可以自定义
        "buildOption": {   //配置项目在构建过程中使用的相关配置
          "packOptions": {  //包配置选项,可用于构建app时避免生成签名的hap
            "buildAppSkipSignHap": false
          },
          "debuggable": true,
          "resOptions": {
            "compression": {
              "media": {
                "enable": true // 是否对media图片启用纹理压缩
              },
              // 纹理压缩文件过滤,非必填,不填会压缩资源目录中的所有图片
              "filters": [
                {
                  "method": {
                    "type": "sut", // 转换类型
                    "blocks": "4x4" // 转换类型的扩展参数
                  },
                  // 指定用来参与压缩的文件,需要满足所有条件且不被exclude过滤的文件才会参与压缩
                  "files": {
                    "path": ["./**/*"], // 指定资源目录中的所有文件
                    "size": [[0, '10k']], // 指定大小10k以下的文件
                    // 指定分辨率小于2048*2048的图片
                    "resolution": [
                      [
                        { "width": 0, "height": 0 }, // 最小宽高
                        { "width": 2048, "height": 2048 } // 最大宽高
                      ]
                    ]
                  },
                  // 从files中剔除掉不需要压缩的文件,需要满足所有过滤条件的文件才会被剔除
                  "exclude": {
                    "path": ["./**/*.jpg"], // 过滤所有jpg文件
                    "size": [[0, '1k']], // 过滤大小1k以下的文件
                    // 过滤分辨率小于1024*1024的图片
                    "resolution": [
                      [
                        { "width": 0, "height": 0 }, // 最小宽高
                        { "width": 1024, "height": 1024 } // 最大宽高
                      ]
                    ]
                  }
                }
              ]
            }
          },
          //cpp相关编译配置
          "externalNativeOptions": {
            "path": "./entry/src/main/cpp/CMakeLists.txt",  //CMake配置文件,提供CMake构建脚本
            "arguments": [],  //传递给CMake的可选编译参数
            "abiFilters": [  //HarmonyOS当前支持的ABI编译环境
              "arm64-v8a",
              "x86_64"
            ],
            "cppFlags": ""  //设置C++编译器的可选参数
          },
          "sourceOption": {   //使用不同的标签对源代码进行分类,以便在构建过程中对不同的源代码进行不同的处理
            "workers": []
          },
          //配置筛选har依赖.so资源文件的过滤规则
          "nativeLib": {
             "filter": {
               //按照.so文件的优先级顺序,打包最高优先级的.so文件
               "pickFirsts": [
                 "**/1.so"
               ],
               //按照.so文件的优先级顺序,打包最低优先级的.so文件
               "pickLasts": [
                 "**/2.so"
               ],
               //根据正则表达式排除匹配到的.so文件,匹配到的so文件将不会被打包
               "excludes": [
                 "**/3.so", //排除所有名称为“3”的so文件
                 "**/x86_64/*.so" //排除所有x86_64架构的so文件
               ],
               //允许当.so重名冲突时,使用高优先级的.so文件覆盖低优先级的.so文件
               "enableOverride": true
            }
          },
        }
      }   
    ]
  },
  "modules": [
    {
      "name": "entry",  //模块名称,须与模块中module.json5文件中的module.name保持一致
      "srcPath": "./entry",  //标明模块根目录相对工程根目录的相对路径
      "targets": [  //定义构建的APP产物,由product和各模块定义的targets共同定义
        {
          "name": "default",  //target名称,由各个模块的build-profile.json5中的targets字段定义
          "applyToProducts": [  
            "default"   //表示将该模块下的"default" Target打包到"default" Product中
          ]
        }
      ]
    }
  ]
}

模块级

下表为"Ability"类型的Module(HAP)对应的模块级build-profile.json5中配置项包含的字段,"Library"类型的Module(HAR和HSP)对应的模块级build-profile.json5中配置项为下表罗列范围的子集。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

模块级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文件,匹配到的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": [  //HarmonyOS当前支持的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": false,   // 5.0.3.600及以上版本,默认为false
            "files": [   //混淆文件的相对路径
              "./obfuscation-rules.txt"
            ]
          },
          "consumerFiles": './consumer-rules.txt' //仅Static Library模块可配置:默认导出的混淆规则
        }
      },
      "debuggable": true,  //定义编译模式是否为debug
      "copyFrom": "release",  //从指定的buildOption中复制相关配置
      "resOptions": {
        "compression": {
          "media": {
            "enable": true // 是否对media图片启用纹理压缩
          },
          // 纹理压缩文件过滤,非必填,不填会压缩资源目录中的所有图片
          "filters": [
            {
              "method": {
                "type": "sut", // 转换类型
                "blocks": "4x4" // 转换类型的扩展参数
              },
              // 指定用来参与压缩的文件,需要满足所有条件且不被exclude过滤的文件才会参与压缩
              "files": {
                "path": ["./**/*"], // 指定当前模块资源目录中的所有文件
                "size": [[0, '10k']], // 指定大小10k以下的文件
                // 指定分辨率小于2048*2048的图片
                "resolution": [
                  [
                    { "width": 0, "height": 0 }, // 最小宽高
                    { "width": 2048, "height": 2048 } // 最大宽高
                  ]
                ]
              },
              // 从files中剔除掉不需要压缩的文件,需要满足所有过滤条件的文件才会被剔除
              "exclude": {
                "path": ["./**/*.jpg"], // 过滤所有jpg文件
                "size": [[0, '1k']], // 过滤大小1k以下的文件
                // 过滤分辨率小于1024*1024的图片
                "resolution": [
                  [
                    { "width": 0, "height": 0 }, // 最小宽高
                    { "width": 1024, "height": 1024 } // 最大宽高
                  ]
                ]
              }
            }
          ]
        }
      },
      //cpp相关编译配置
      "externalNativeOptions": {
        "path": "./src/main/cpp/CMakeLists.txt",  //CMake配置文件,提供CMake构建脚本
        "arguments": [],  //传递给CMake的可选编译参数
        "abiFilters": [  //HarmonyOS当前支持的ABI编译环境
          "arm64-v8a",
          "x86_64"
        ],
        "cppFlags": ""  //设置C++编译器的可选参数
      },
      "sourceOption": {   //使用不同的标签对源代码进行分类,以便在构建过程中对不同的源代码进行不同的处理
        "workers": []
      },
      //配置筛选har依赖.so资源文件的过滤规则
      "nativeLib": {
          "filter": {
            //按照.so文件的优先级顺序,打包最高优先级的.so文件
            "pickFirsts": [
              "**/1.so"
            ],
            //按照.so文件的优先级顺序,打包最低优先级的.so文件
            "pickLasts": [
              "**/2.so"
            ],
            //根据正则表达式排除匹配到的.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",
    }    
  ]
}

最后呢

很多开发朋友不知道需要学习那些鸿蒙技术?鸿蒙开发岗位需要掌握那些核心技术点?为此鸿蒙的开发学习必须要系统性的进行。

而网上有关鸿蒙的开发资料非常的少,假如你想学好鸿蒙的应用开发与系统底层开发。你可以参考这份资料,少走很多弯路,节省没必要的麻烦。由两位前阿里高级研发工程师联合打造的《鸿蒙NEXT星河版OpenHarmony开发文档》里面内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(Harmony NEXT)技术知识点

如果你是一名Android、Java、前端等等开发人员,想要转入鸿蒙方向发展。可以直接领取这份资料辅助你的学习。下面是鸿蒙开发的学习路线图。

在这里插入图片描述

针对鸿蒙成长路线打造的鸿蒙学习文档。话不多说,我们直接看详细鸿蒙(OpenHarmony )手册(共计1236页)与鸿蒙(OpenHarmony )开发入门视频,帮助大家在技术的道路上更进一步。

  • 《鸿蒙 (OpenHarmony)开发学习视频》
  • 《鸿蒙生态应用开发V2.0白皮书》
  • 《鸿蒙 (OpenHarmony)开发基础到实战手册》
  • OpenHarmony北向、南向开发环境搭建
  • 《鸿蒙开发基础》
  • 《鸿蒙开发进阶》
  • 《鸿蒙开发实战》

在这里插入图片描述

总结

鸿蒙—作为国家主力推送的国产操作系统。部分的高校已经取消了安卓课程,从而开设鸿蒙课程;企业纷纷跟进启动了鸿蒙研发。

并且鸿蒙是完全具备无与伦比的机遇和潜力的;预计到年底将有 5,000 款的应用完成原生鸿蒙开发,未来将会支持 50 万款的应用。那么这么多的应用需要开发,也就意味着需要有更多的鸿蒙人才。鸿蒙开发工程师也将会迎来爆发式的增长,学习鸿蒙势在必行! 自↓↓↓拿
1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值