1# h2sa工具 2 3## 简介 4 5h2sa工具,即SERVICE框架生成工具,当开发者为OpenHarmony系统框架开发某些功能时,有时需要将这个功能包装成一个独立的服务进程运行在系统中,为了其它应用进程能够调用此服务,开发人员需要基于系统IPC通信框架编写一套远程接口调用实现。实现Service远程调用接口需要开发人员熟悉IPC通信框架,了解proxy/stub的继承与实现方式,掌握C++类型转为MessageParcel数据包的各种API方法,有一定的学习成本。而Service代码生成工具能够帮助使用者生成框架代码,提升开发效率。用户只需提供一个定义远程方法的.h头文件,工具会自动生成整个Service框架的代码,包含Ability注册、proxy/stub类实现、MessageParcel数据包构造、Service子系统编译及开机自启动相关配置文件。 6 7## 约束 8系统:建议Ubuntu 20.04或者Windows 10 9 10依赖版本:VS Code 1.62.0 11 12## 使用方法 13 14### 生成 15 161.安装python库 CppHeaderParser 17 18``` 19pip install CppHeaderParser 20``` 21 222.安装typescript:在napi_generator/src/cli/h2sa/src/src目录下执行命令: 23 24 npm i typescript 25 263.安装stdio:在napi_generator/src/cli/h2sa/src目录下执行命令: 27 28 npm i stdio 29 304.将待转换的文件test.h文件拷贝到napi_generator/src/cli/h2sa/src/src/gen目录下;test.h文件示例如下所示: 31 32``` 33#ifndef TEST_H 34#define TEST_H 35 36namespace OHOS { 37 namespace Example { 38 /** 39 * @brief service服务,提供IPC调用接口 40 * @ServiceClass 41 */ 42 class test { 43 public: 44 int testFunc(int v1, int v2, bool v3); 45 }; 46 } // namespace Example 47} // namespace OHOS 48#endif // TEST_H 49``` 50 51注意:.h文件中待生成的主class必须加注释:@brief service服务,提供IPC调用接口 ,如下所示: 52 53``` 54/** 55 * @brief service服务,提供IPC调用接口 56 * @ServiceClass 57 */ 58``` 59 605.在napi_generator/src/cli/h2sa/src/src/gen目录下执行命令生成service框架代码: 61 62``` 63node main.js -f test.h 64``` 65 66其中,参数详情如下: 67 -f,定义远程服务的.h文件; 68 -l, 日志级别(0-3),默认为1; 69 -o,生成框架代码输入到指定路径下; 70 -s,指定serviceID。 71 -v,指定版本(3.2和4.1,默认版本为3.2) 726.输出testservice文件夹,其中的文件如下所示: 73 74 75 76### 集成 77 78Service框架代码生成后,系统框架开发者进行二次开发后,即可集成到OpenHarmony编译系统,生成对应的库文件,供应用开发者调用接口。工具集成到OpenHarmony的具体操作步骤可以左键单击以下链接了解: 79 80[工具集成](https://gitee.com/openharmony/napi_generator/blob/master/src/cli/h2sa/docs/usage/h2sa_ENSEMBLE_METHOD_ZH.md) 81 82 83 84