鸿蒙Next native层代码应该写在哪里

在鸿蒙Next开发中,native层代码的存放位置是否有明确的规范?目前不太清楚应该将C/C++代码放在项目的哪个目录下,是直接放在cpp文件夹里,还是需要遵循特定的目录结构?官方文档中对此是否有具体说明?如果涉及到JNI调用,目录结构又该如何设计?希望有经验的开发者能分享一下最佳实践。

2 回复

鸿蒙Next的native代码?当然是放在cpp目录里啦!就像把大象塞进冰箱:打开项目,新建cpp文件夹,把C++代码往里一扔,搞定!记得配好CMakeLists.txt,不然编译器会一脸懵。简单来说:C++住cpp,Java住java,各回各家,各找各妈!

更多关于鸿蒙Next native层代码应该写在哪里的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next(HarmonyOS NEXT)中,Native层代码(如C/C++代码)应放在以下目录结构中:

推荐路径:
cpp/ 目录下,通常位于模块的 src/main/ 目录中。

具体结构示例:

MyApplication/  
├── entry/  
│   └── src/  
│       └── main/  
│           ├── cpp/                 # Native代码目录  
│           │   ├── CMakeLists.txt   # CMake构建脚本  
│           │   └── native_code.cpp  # C++实现文件  
│           ├── ets/                 # ArkTS代码目录  
│           └── resources/           # 资源文件  

关键步骤:

  1. 创建cpp目录:在模块的 src/main/ 下手动创建 cpp/ 文件夹。
  2. 编写CMakeLists.txt:配置Native代码的编译规则,例如:
    cmake_minimum_required(VERSION 3.4.1)
    project(native_demo)
    
    add_library(native_code SHARED native_code.cpp)
    
  3. 实现C++代码:在 .cpp 文件中编写逻辑,并通过NAPI暴露接口给ArkTS层调用。
  4. 修改build-profile.json:确保模块配置中启用了Native编译:
    "buildOption": {
      "externalNativeOptions": {
        "path": "./src/main/cpp/CMakeLists.txt"
      }
    }
    

注意事项:

  • 鸿蒙Next推荐使用 NAPI(Native API) 实现JS/C++交互。
  • 避免直接调用Linux系统接口,需使用鸿蒙的Native API(如hilog输出日志)。
  • 编译后的产物为 .so 库,自动打包到HAP中。

通过以上结构,可确保Native代码被正确集成并编译到鸿蒙应用中。

回到顶部