鸿蒙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/ # 资源文件
关键步骤:
- 创建cpp目录:在模块的
src/main/下手动创建cpp/文件夹。 - 编写CMakeLists.txt:配置Native代码的编译规则,例如:
cmake_minimum_required(VERSION 3.4.1) project(native_demo) add_library(native_code SHARED native_code.cpp) - 实现C++代码:在
.cpp文件中编写逻辑,并通过NAPI暴露接口给ArkTS层调用。 - 修改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代码被正确集成并编译到鸿蒙应用中。

