HarmonyOS—配置编译构建信息

在进行应用/服务的编译构建前,需要对工程和编译构建的Module进行设置。API Version 9、API Version 8与API Version 4~7的构建体系不同,因此在设置编译构建信息时也存在差异:

  • API Version 9:需要对构建配置文件、构建脚本、应用依赖的共享包等信息进行设置。
  • build-profile.json5:应用/服务构建配置文件。
  • hvigorfile.ts:自定义编译构建脚本。
  • oh-package.json5:应用的三方包依赖,支持共享包的依赖。
  • API Version 8:需要对构建配置文件、构建脚本、应用依赖的npm包等信息进行设置。
  • build-profile.json5:HarmonyOS应用/服务构建配置文件。
  • hvigorfile.ts:自定义编译构建脚本。
  • package.json:应用的三方包依赖,支持HAR(遵循npm标准规范)和npm包的依赖。
  • API Version 4~7:需要通过build.gradle来对工程编译构建参数进行设置。

build-profile.json5(API Version 8~9)

工程级build-profile.json5

工程级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
        }
      }
    ],
    "compileSdkVersion": 9,  //指定HarmonyOS应用/服务编译时的SDK版本
    "compatibleSdkVersion": 9,  //指定HarmonyOS应用/服务兼容的最低SDK版本
    //定义构建的产品品类,如通用默认版、付费版、免费版等
    "products": [  
      {
        "name": "default",  //定义产品的名称,支持定制多product目标产物,具体请参考定制多目标构建产物
        "signingConfig": "default",  //指定当前产品品类对应的签名信息,签名信息需要在signingConfigs中进行定义
      }
    ]
  },
  "modules": [
    {
      "name": "entry",  //模块名称
      "srcPath": "./entry",  //标明模块根目录相对工程根目录的相对路径
      "targets": [  //定义构建的APP产物,由product和各模块定义的targets共同定义
        {
          "name": "default",  //target名称,由各个模块的build-profile.json5中的targets字段定义
          "applyToProducts": [  
            "default"   //表示将该模块下的“default” Target打包到“default” Product中
          ]
        }
      ]
    }
  ]
}

模块级build-profile.json5

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

{
  "apiType": 'faMode',  //API类型,支持FA和Stage模型
  "showInServiceCenter": true,  //是否在服务中心展示
  "
### 编译第三方SO文件在HarmonyOS上的方法 对于HarmonyOS而言,编译第三方共享库(`.so` 文件),通常涉及几个重要步骤。虽然具体细节可能依赖于项目配置和所使用的开发工具链版本,但是基本流程可以概括如下: #### 准备工作环境 确保已经安装并设置了适用于HarmonyOS应用开发的IDE——DevEco Studio,并且正确配置了NDK (Native Development Kit),这是处理原生代码以及外部.so文件的基础。 #### 获取源码或预构建二进制文件 如果计划从头开始编译,则需获取目标库的源代码;如果是直接使用已有的.so文件,则应确认这些文件兼容HarmonyOS平台架构(ARM等)。这一步骤类似于其他操作系统下的操作[^1]。 #### 配置build.gradle文件 为了使工程能够识别到所需的第三方.so文件,在项目的 `build.gradle` 中适当位置添加必要的路径声明。例如,假设有一个位于特定目录中的 `.so` 文件想要加入classpath中,可以通过设置sourceSets来指定本地库的位置: ```groovy android { ... sourceSets { main { jniLibs.srcDirs = ['libs'] // 假设.so文件存放在project根目录下名为'libs'的文件夹内 } } } ``` 此部分借鉴自Android环境下引入第三方jar的经验,尽管HarmonyOS有其独特之处,但在概念层面二者相似[^4]。 #### 使用CMakeLists.txt集成 当涉及到更复杂的场景比如链接多个静态/动态库时,推荐采用CMake作为构建系统的一部分来进行管理。创建或编辑 `CMakeLists.txt` 来指明哪些库应该被包含进来及其相对路径: ```cmake add_library( # Sets the name of the library. native-lib # Sets the library as a shared library. SHARED # Provides a relative path to your source file(s). src/main/cpp/native-lib.cpp ) find_library( log-lib log ) include_directories(${PROJECT_SOURCE_DIR}/../prebuilt/include) target_link_libraries( # Specifies the target library. native-lib ${log-lib} # Adds pre-built .so files located in specified directory. ${PROJECT_SOURCE_DIR}/../prebuilt/lib/${ANDROID_ABI}/libexample.so ) ``` 这里展示了如何通过CMake脚本将预先存在的.so文件与当前项目关联起来。 #### 构建与测试 完成上述配置之后,利用DevEco Studio内置的功能执行同步、清理旧版构建产物再重新编译整个工程项目。成功后可以在模拟器或者真实设备上部署应用程序以验证新添入的.so功能模块是否正常运作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值