Modify the documents based on the tool support

Signed-off-by: zhaojunxia <zhaojunxia@kaihong.com>
This commit is contained in:
zhaojunxia 2022-09-29 15:01:47 +08:00 committed by huoxiaodan
parent c5023409a0
commit 82ba560572
28 changed files with 72 additions and 334 deletions

View File

@ -22,7 +22,6 @@
│ │ | |── extend # 扩展模块包括gn文件生成、linux环境适配代码等
│ │ | |── generate # 生成器
│ │ | └── tools # 公共模块代码,包括消息体校验、文件读写、正则表达式转换等
│ │ └── generator #IntelliJ IDEA插件代码
│ ├── test # UT、ST测试
│ ├── FAQ # NAPI框架工具问题反馈
│ └── README # 工具使用指导

View File

@ -85,103 +85,16 @@
### VS插件开发说明
#### Linux
具体的插件开发步骤,可以左键单击以下链接了解:
1.在napi_generator目录下将napi_generator-linux可执行文件复制到napi_generator/napi_vs_plugin/src/目录下,执行命令如下:
cp napi_generator-linux napi_vs_plugin/src/
2.在napi_generator/napi_vs_plugin/src目录下执行命令
npm i
3.在napi_generator/napi_vs_plugin/src目录下执行命令
npm i typescript
4.在napi_generator/napi_vs_plugin/src目录下执行命令
npm i vsce
5.在napi_generator/napi_vs_plugin/src目录下执行命令
npx vsce package
每个选项都选择y然后回车最终会在当前目录下打包生成一个插件gnapi-0.0.1.vsix。结果如下
harmony@Ubuntu-64:~/napi/napi_generator_5/napi_vs_plugin/src$ npx vsce package
WARNING A 'repository' field is missing from the 'package.json' manifest file.
Do you want to continue? [y/N] y
WARNING Using '*' activation is usually a bad idea as it impacts performance.
More info: https://code.visualstudio.com/api/references/activation-events#Start-up
Do you want to continue? [y/N] y
WARNING LICENSE.md, LICENSE.txt or LICENSE not found
Do you want to continue? [y/N] y
This extension consists of 3370 files, out of which 1627 are JavaScript files. For performance reasons, you should bundle your extension: https://aka.ms/vscode-bundle-extension . You should also exclude unnecessary files by adding them to your .vscodeignore: https://aka.ms/vscode-vscodeignore
DONE Packaged: /home/harmony/napi/napi_generator_5/napi_vs_plugin/src/gnapi-0.0.1.vsix (3370 files, 44.42MB)
#### Windows
1.将napi_generator目录下的napi_generator-win.exe可执行文件复制到napi_generator/napi_vs_plugin/src/目录下。
2.在napi_generator/napi_vs_plugin/src目录下执行命令
npm i
3.在napi_generator/napi_vs_plugin/src目录下执行命令
npm i typescript
4.在napi_generator/napi_vs_plugin/src目录下执行命令
npm i vsce
5.在napi_generator/napi_vs_plugin/src目录下执行命令
npx vsce package
每个选项都选择y然后回车最终会在当前目录下打包生成一个插件gnapi-0.0.1.vsix。结果如下
E:\napi_generator\napi_generator-master\napi_vs_plugin\src>npx vsce package
WARNING A 'repository' field is missing from the 'package.json' manifest file.
Do you want to continue? [y/N] y
WARNING Using '*' activation is usually a bad idea as it impacts performance.
More info: https://code.visualstudio.com/api/references/activation-events#Start-up
Do you want to continue? [y/N] y
WARNING LICENSE.md, LICENSE.txt or LICENSE not found
Do you want to continue? [y/N] y
This extension consists of 3467 files, out of which 1692 are JavaScript files. For performance reasons, you should bundle your extension: https://aka.ms/vscode-bundle-extension . You should also exclude unnecessary files by adding them to your .vscodeignore: https://aka.ms/vscode-vscodeignore
DONE Packaged: E:\napi_generator\napi_generator-master\napi_vs_plugin\src\gnapi-0.0.1.vsix (3467 files, 42.3MB)
[VS插件开发说明](https://gitee.com/openharmony/napi_generator/blob/master/napi_vs_plugin/docs/DEVELOP_ZH.md)
### IntelliJ插件开发说明
#### 环境说明
具体的插件开发步骤,可以左键单击以下链接了解:
系统建议Windows 10
[IntelliJ插件开发说明](https://gitee.com/openharmony/napi_generator/blob/master/napi_IntelliJ_plugin/docs/DEVELOP_ZH.md)
#### 开发步骤
1.将napi_generator目录下的可执行文件分别放置在napi_generator/src/generator/resources/cmds目录下对应系统的文件夹下。
2.通过IntelliJ IDEA打开napi_generator/src/generator目录下的代码。
![](../figures/IntelliJ_develop_one.png)
3.基础环境配置按照IDEA插件开发环境配置操作确保项目可运行且.d.ts文件可正常生成框架代码。
[IDEA插件开发环境配置](https://gitee.com/openharmony/napi_generator/blob/master/napi_IntelliJ_plugin/README_zh.md)
4.点击Intellij IDEA工具右上角Built Project按钮等待工程built完成。
![](../figures/IntelliJ_env_built_pro.png)
5.在IDEA Community中依次点击Build>Prepare All Plugin Modules for development"然后在Select Modules框中点击okjar包生成完成后在工具右下角提示jar包生成成功且包含jar包存放位置。
![](../figures/IntelliJ_env_built_jar.png)
![](../figures/IntelliJ_env_select_moudles.png)
![](../figures/IntelliJ_env_built_jar_success.png)
## 工具测试
进行工具二次开发后本地可进行单元测试、story特性测试确保工具的可用性。左键单击以下链接了解详情

View File

@ -45,43 +45,37 @@ napi_generator的可执行程序方式和插件方式都具有预检查的功能
### 可执行程序使用方法
#### Linux
1.将要转换的.d.ts文件放到任意目录下建议放到可执行程序napi_generator-linux同级目录下并且检查需要转换的d.ts文件中是否声明了import的d.ts文件如果存在需要将import的d.ts文件也放入到待转换的d.ts文件相同的目录下。此处新建out文件用于存放生成框架代码。整体目录文件如下
1.将要转换的.d.ts文件放到任意目录下建议放到可执行程序napi_generator-linux同级目录下并且检查需要转换的d.ts文件中是否声明了import的d.ts文件如果存在需要将import的d.ts文件也放入到待转换的d.ts文件相同的目录下。此处新建out文件,用于存放生成框架代码。整体目录文件如下:
harmony@Ubuntu-64:~/napi/napi_generator_5/examples/gen$ ls
basic.d.ts napi_generator-linux @ohos.napitest.d.ts out
2.在终端中进入到之前可执行程序napi_generator-linux所在的目录并运行napi_generator-linux。在napi_generator-linux后面要加参数-f后面再加要对应的.d.ts文件名然后添加参数-o后面再加输出文件目录。若不添加参数-o则输出文件默认存放在当前目录下。此处以添加参数-o为例,命令如下:
2.在终端中进入到之前可执行程序napi_generator-linux所在的目录并运行napi_generator-linux。-f为d.ts接口文件-o为生成框架代码的输出路径若不加-o参数默认输出到当前目录下,命令如下:
harmony@Ubuntu-64:~/napi/napi_generator_5/examples/gen$ ./napi_generator-linux -f @ohos.napitest.d.ts -o out
3.运行成功后会在out目录下生成对应的文件。例如
harmony@Ubuntu-64:~/napi/napi_generator_5/examples/gen$ cd out/
harmony@Ubuntu-64:~/napi/napi_generator_5/examples/gen/out$ ls
binding.gyp BUILD.gn napi_gen.log napitest.cpp napitest.h napitest_middle.cpp test.sh tool_utility.cpp tool_utility.h
4.此外,工具还支持指定路径下.d.ts文件转换、同一目录下多个.d.ts文件同时转换、多级模块.d.ts文件转换等场景。
4.此外工具还支持指定路径下d.ts文件转换、同一目录下多个d.ts文件同时转换、多级模块d.ts文件转换、d.ts接口import多个文件等场景。
1指定路径下.d.ts文件转换可转换路径下所有.d.ts文件。napi_generator-linux文件存放在~/napi/napi_generator_5/examples/gen目录下.d.ts文件存放在~/napi/napi_generator_5/examples/ts目录下框架代码转换过程如下:
1指定路径下.d.ts文件转换可转换路径下所有.d.ts文件。napi_generator-linux文件存放在~/napi/napi_generator_5/examples/gen目录下.d.ts文件存放在~/napi/napi_generator_5/examples/ts目录下框架代码转换命令如下:
harmony@Ubuntu-64:~/napi/napi_generator_5/examples/gen$ ./napi_generator-linux -d '../ts' -o out
harmony@Ubuntu-64:~/napi/napi_generator_5/examples/gen$ cd out/
harmony@Ubuntu-64:~/napi/napi_generator_5/examples/gen/out$ ls
binding.gyp BUILD.gn napi_gen.log power.cpp power.h power_middle.cpp test.sh tool_utility.cpp tool_utility.h
2同一目录下多个.d.ts文件同时转换。.../gen目录下存在两个.d.ts文件分别为@ohos.napitest.d.ts和@ohos.power.d.ts多个文件中间以“”隔开注意文件中namespace后的名称不可相同。框架代码转换过程如下:
2同一目录下多个.d.ts文件同时转换。.../gen目录下存在两个.d.ts文件分别为@ohos.napitest.d.ts和@ohos.power.d.ts多个文件中间以“”隔开注意文件中namespace后的名称不可相同。框架代码转换命令如下
harmony@Ubuntu-64:~/napi/napi_generator_5/examples/gen$ ./napi_generator-linux -f @ohos.napitest.d.ts,@ohos.power.d.ts -o out
harmony@Ubuntu-64:~/napi/napi_generator_5/examples/gen$ cd out/
harmony@Ubuntu-64:~/napi/napi_generator_5/examples/gen/out$ ls
binding.gyp BUILD.gn napi_gen.log napitest.cpp napitest.h napitest_middle.cpp power.cpp power.h power_middle.cpp test.sh tool_utility.cpp tool_utility.h
3多级模块.d.ts文件转换。.../gen目录下存在@ohos.napi_.test.A.d.ts文件转换过程如下:
3多级模块.d.ts文件转换。.../gen目录下存在@ohos.napi_.test.A.d.ts文件转换命令如下
harmony@Ubuntu-64:~/napi/napi_generator_5/examples/gen$ ./napi_generator-linux -f @ohos.napi_.test.A.d.ts -o out
harmony@Ubuntu-64:~/napi/napi_generator_5/examples/gen$ cd out/
harmony@Ubuntu-64:~/napi/napi_generator_5/examples/gen/out$ ls
binding.gyp BUILD.gn napi_gen.log napitest.cpp napitest.h napitest_middle.cpp test.sh tool_utility.cpp tool_utility.h
4待转换的d.ts引用多个d.ts文件。若当前d.ts文件引用多个d.ts文件且被引用的接口文件也需生成框架代码此时需要将工具import开关打开且需将basic.d.ts文件放置在待转换d.ts文件上一级目录下。-i参数默认为false此处需置为true,执行命令如下:
harmony@Ubuntu-64:~/napi/napi_generator_5/examples/gen$ ./napi_generator-linux -f @ohos.napitest.d.ts -o out -i true
#### Windows
@ -95,20 +89,15 @@ napi_generator的可执行程序方式和插件方式都具有预检查的功能
![](../figures/pic-cmd.png)
2.在命令行中进入到之前可执行程序napi_generator-win.exe所在的目录并运行napi_generator-win.exe在napi_generator-win.exe后面要加参数-f后面再加要对应的.d.ts文件名如果不加参数-o输出文件就默认在当前目录下。例如
2.在命令行中进入到之前可执行程序napi_generator-win.exe所在的目录并运行napi_generator-win.exe。-f参数后为d.ts接口文件-o为生成框架代码输出路径若不加此参数默认输出到当前目录下命令如下
E:\napi_tool>napi_generator-win.exe -f @ohos.napitest.d.ts
命令行参数如下,-f是必须添加的参数-o是可选参数如果不加就默认当前目录。
-f, --filename <ARG1> .d.ts file
-o, --out <ARG1> output directory ("." by default)
3.运行成功后会在当前目录下生成对应的文件。例如:
![](../figures/pic-d-ts-transition.png)
4.此外,工具还支持指定路径下.d.ts文件转换、同一目录下多个.d.ts文件同时转换、多级模块.d.ts文件转换等场景。
4.此外工具还支持指定路径下d.ts文件转换、同一目录下多个d.ts文件同时转换、多级模块d.ts文件转换、d.ts接口import多个文件等场景。
1指定路径下.d.ts文件转换可转换路径下所有.d.ts文件。napi_generator-win.exe文件存放在E:\napi_generator\napi_generator-master\examples\gen>目录下,.d.ts文件存放在E:\demo目录下。命令执行成功后gen目录中生成对应的文件如上图所示。框架代码转换命令如下
@ -124,115 +113,25 @@ napi_generator的可执行程序方式和插件方式都具有预检查的功能
E:\napi_generator\napi_generator-master\examples\gen>napi_generator-win.exe -f @ohos.napi_.test.A.d.ts
4待转换的d.ts引用多个d.ts文件。若当前d.ts文件引用多个d.ts文件且被引用的接口文件也需生成框架代码此时需要将工具import开关打开且需将basic.d.ts文件放置在待转换d.ts文件上一级目录下。-i参数默认为false此处需置为true,执行命令如下:
E:\napi_generator\napi_generator-master\examples\gen>napi_generator-win.exe -f @ohos.napitest.d.ts -i true -o out
#### Mac
方法步骤参考windows、Linux的使用方法。
### VS Code插件使用方法
#### 说明
visual studio code 版本需1.62.0及以上。
#### 步骤
具体的插件使用步骤,可以左键单击以下链接了解:
1.打开VS Code在左侧边栏中选择插件安装。
![](../figures/pic-plug-in-search.png)
2.单击上面三个点的按钮选择从VSIX安装选项然后选择刚才生成的gnapi-0.0.1.vsix插件文件再单击安装。
![](../figures/pic-plug-in-select.png)
3.安装完成后就会在VS Code的插件管理器中能看到gnapi这个插件了。
![](../figures/pic-plug-in-gnapi.png)
4.在VS Code中找到需要转换的.d.ts文件并且检查需要转换的d.ts文件中是否声明了import的d.ts文件如果存在需要将import的d.ts文件也放入到待转换的d.ts文件相同的目录下例如
![](../figures/pic-plug-in-select-d-ts.png)
5.鼠标在.d.ts上单击右键选择“ Generate Napi Frame”选项工具打开 Generate Napi Frame窗口。选择方式有.d.ts文件、文件夹两种方式此处以.d.ts文件为例选择接口文件文本框中默认填写.d.ts文件路径此处不修改生成框架路径文本框填写生成文件所放文件夹绝对路径编译脚本路径文本框选填此处不填写然后点击ok。
![](../figures/pic-plug-in-gen-c++.png)
![](../figures/pic-generator-napi-frame.png)
6.转换成功工具右下角就会提示“Generated successfully”的信息并且在.d.ts文件当前目录下生成对应文件例如
![](../figures/pic-plug-in-gen-sucess.png)
7.此外,工具还支持指定路径下.d.ts文件转换、同一目录下多个.d.ts文件同时转换、多级模块.d.ts文件转换等场景。
1指定路径下.d.ts文件转换可转换路径下所有.d.ts文件。Generate Napi Frame窗口中选择方式修改为文件夹选择接口文件文本框中填写待转换.d.ts文件路径此处为E:\demo生成框架路径填写生成文件所放路径此处为项目当前路径编译脚本路径选填此处不填写然后点击ok。Generate Napi Frame窗口填写与生成文件如下图所示
![](../figures/pic-plug-in-gen-dir-sucess.png)
2同一目录下多个.d.ts文件同时转换。项目中存在@ohos.napitest.d.ts和@ohos.power.d.ts两个文件且声明了import的d.ts文件。Generate Napi Frame窗口中选择方式修改为.d.ts文件选择接口文件文本框中填写待转换.d.ts文件此处为“E:\napi_tool_new\@ohos.napitest.d.ts,E:\napi_tool_new\@ohos.power.d.ts”生成框架路径填写生成文件所放路径此处为项目当前路径编译脚本路径选填此处不填写然后点击ok。Generate Napi Frame窗口填写与生成文件如下图所示
![](../figures/pic-plug-in-gen-files-sucess.png)
3)多级模块.d.ts文件转换。项目中存在@ohos.napi_.test.A.d.ts文件Generate Napi Frame窗口中选择方为.d.ts文件选择接口文件文本框中填写待转换.d.ts文件此处为“E:\napi_tool_new\@ohos.napi_.test.A.d.ts”生成框架路径填写生成文件所放路径此处为项目当前路径编译脚本路径选填此处不填写然后点击ok。Generate Napi Frame窗口填写与生成文件如下图所示
![](../figures/pic-plug-in-gen-module-sucess.png)
[VS插件使用说明](https://gitee.com/openharmony/napi_generator/blob/master/napi_vs_plugin/docs/INSTRUCTION_ZH.md)
### IntelliJ插件使用方法
#### 依赖
系统:不限
具体的插件使用步骤,可以左键单击以下链接了解:
开发工具DevEco stdio
#### 使用指导
下载可执行程序与插件包generator.jar下载链接如下
[下载链接](http://ftpkaihongdigi.i234.me:5000/fsdownload/PPVcNMgVv/2022-06-13)
使用者进入上述链接中选择napi_generator_outputs.zip下载插件包后按照下述步骤安装使用即可
1.新建或打开项目工程,以下以新建项目工程为例。
File->New->Create Project。
![](../figures/DevEco_step_newFile.png)
Ability Template选择Empty Ability,单击Next。
![](../figures/DevEco_step_firstNext.png)
填写Project name、Save location,其他选项可不修改单击Finish,新的工程就创建好了。
![](../figures/DevEco_step_finish.png)
2.把需要转换的.d.ts文件放在DevEco stdio新建项目的src目录下并且检查需要转换的d.ts文件中是否声明了import的d.ts文件如果存在需要将import的d.ts文件也放入到待转换的d.ts文件相同的目录下。
![](../figures/DevEco_step_project.png)
3.安装插件File->Settings->Plugins->Installed->Install Plugin from Disk...选择下载的generator.jar安装成功之后重启IDE。
![](../figures/DevEco_step_pluginsOk.png)
![](../figures/DevEco_step_applyPlugins.png)
4.选择.d.ts文件,右键选择 Generate Napi Frame选项工具弹出 Generate Napi Frame弹窗。接口文件文本框填写.d.ts文件路径生成框架路径文本框填写转换后生成文件存放文件夹路径此处为src下新增out文件夹生成文件存放在out中编译脚本路径默认填写不修改点击ok。
![](../figures/DevEco_step_generate.png)
![](../figures/DevEco_step_generate_ok.png)
5.执行结束后会在目录下生成对应的文件。
![](../figures/DevEco_step_generateSuccess.png)
6.此外,工具还支持指定路径下.d.ts文件转换、同一目录下多个.d.ts文件同时转换等场景。
1指定路径下.d.ts文件转换可转换路径下所有.d.ts文件。Generate Napi Frame窗口中接口文件文本框中填写待转换.d.ts文件路径此处为E:\demo生成框架路径填写生成文件所放路径此处为E:\deveco_project\entry\src\out编译脚本路径为E:\deveco_project\entry\src写然后点击ok。Generate Napi Frame窗口填写与生成文件如下图所示
![](../figures/DevEco_converse_dir.png)
![](../figures/DevEco_converse_dir_succ.png)
2同一目录下多个.d.ts文件同时转换。项目中存在@ohos.napitest.d.ts和@ohos.power.d.ts两个文件且声明了import的d.ts文件。Generate Napi Frame窗口中接口文件文本框中填写待转换.d.ts文件夹此处为“E:\deveco_project\entry\src”生成框架路径填写生成文件所放路径此处为E:\deveco_project\entry\src\out编译脚本路径为E:\deveco_project\entry\src写然后点击ok。Generate Napi Frame窗口填写与生成文件如下图所示
![](../figures/DevEco_converse_file.png)
![](../figures/DevEco_converse_file_succ.png)
[IntelliJ插件使用说明](https://gitee.com/openharmony/napi_generator/blob/master/napi_IntelliJ_plugin/docs/INSTRUCTION_ZH.md)
### 注意

View File

@ -20,7 +20,7 @@ napi_generator/examples/app
```
hap包的具体生成方法可参考OpenHarmony/docs/zh-cn/application-dev文档中使用JS语言开发FA模型。其中修改index.js文件内容如下
```
@ -68,11 +68,14 @@ napi_generator/examples/app
```
## 使用说明
步骤一:安装镜像环境。
|-- system.img
|-- userdata.img
|-- vendor.img
harmony@Ubuntu-64:~/OpenHarmony/out/rk3568-khdvk/packages/phone/images/pack$ ll
总用量 3329884
drwxrwxr-x 2 harmony harmony 4096 9月 27 14:14 ./
drwxrwxr-x 3 harmony harmony 4096 9月 27 15:30 ../
-rw-rw-r-- 1 harmony harmony 3409787466 9月 27 14:14 RK3568-KHDVK-RAMDISK-GPT-20220929-1817.img
步骤二安装hap包。
@ -94,11 +97,11 @@ napi_generator/examples/app
log.txt中包含“======fun1(name: string, flags: Entity): number======”日志表示接口调用成功。如下所示:
01-01 00:13:10.355 2020 2027 I 00000/NAPITESTNAPILayer: fun1_middle:93 *******fun1_middle begin**********
01-01 00:13:10.357 2020 2038 D 01400/OHOS::ROSEN: RSRenderThread ProcessCommands size: 2
01-01 00:13:10.358 2020 2038 D 01400/OHOS::ROSEN: RSRenderThread DrawFrame(790351535051) in GPU
01-01 00:13:10.360 2020 2027 I 00000/NAPITESTNAPILayer: fun1_middle:107 *****fun1_middle xxxxx**********
01-01 00:13:10.360 2020 2027 I 00000/NAPITESTNAPILayer: fun1:28 ======fun1(name: string, flags: Entity): number======
01-01 00:13:10.360 2020 2027 I 00000/NAPITESTNAPILayer: fun1_middle:113 *******fun1_middle end*********
01-01 00:13:10.357 2020 2038 D 01400/OHOS::ROSEN: RSRenderThread ProcessCommands size: 2
01-01 00:13:10.358 2020 2038 D 01400/OHOS::ROSEN: RSRenderThread DrawFrame(790351535051) in GPU
01-01 00:13:10.360 2020 2027 I 00000/NAPITESTNAPILayer: fun1_middle:107 *****fun1_middle xxxxx**********
01-01 00:13:10.360 2020 2027 I 00000/NAPITESTNAPILayer: fun1:28 ======fun1(name: string, flags: Entity): number======
01-01 00:13:10.360 2020 2027 I 00000/NAPITESTNAPILayer: fun1_middle:113 *******fun1_middle end*********
## 相关仓

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 133 KiB

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 130 KiB

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 88 KiB

View File

@ -14,8 +14,9 @@
1.将napi_generator目录下的可执行文件分别放置在napi_generator/napi_IntelliJ_plugin/resources/cmds目录下对应系统的文件夹下。
2.下载IDEA Community 与 JDK11 配置好环境。
点击 https://www.jetbrains.com/idea/download/ 下载Community版本并完成安装。
2.下载并安装IDEA Community、JDK11配置好环境。IDEA Community版本可以左键单击以下链接下载。
[下载链接](https://www.jetbrains.com/idea/download/)
3.打开IDEA Community应用程序。
依次点击项目File>Open 选择napi_generator/napi_IntelliJ_plugin项目文件夹。
@ -30,17 +31,17 @@ Project Settings > Modules 新建Modules。点击上方“-”删除原有的Mod
![](../../figures/IntelliJ_env_Proj_Module.png)
6.配置Module SDK.
在New Module对话框中选择IntelliJ Platform Plugin。若为首次环境配置请在Module SDK 下拉框中点击 Add IntelliJ Platform Plugin SDK 选择IDEA Community安装目录点击OK,在Select Internal Java Platform 选择 JAVA SDK 11213版本只支持 11)点击New Module对话框中Next。
在New Module对话框中选择IntelliJ Platform Plugin。若Module SDK中无可选SDK请在Module SDK 下拉框中点击 Add IntelliJ Platform Plugin SDK 选择IDEA Community安装目录点击OK,在Select Internal Java Platform 选择 JAVA SDK 11213版本只支持 11)点击New Module对话框中Next。
![](../../figures/IntelliJ_env_Proj_Module_New.png)
7.配置Content root.
Content root选择napi_generator/src/generator文件夹module name会自动变为generator。点击Finish若出现提示已存在是否覆盖的提示请点“Yes”完成配置。
Content root选择~/napi_generator/napi_IntelliJ_plugin文件夹module name填写generator。点击Finish若出现提示已存在是否覆盖的提示请点“Yes”完成配置。
![](../../figures/IntelliJ_env_module_root.png)
8.Modules配置完成后若在SDKs中无相应JDK和Plugin SDK,请点击+号分别添加 Add Java JDK和Add Intellij PlantForm Plugin SDK,Java JDK为java11的安装目录Plugin SDK为 IDEA Community 2021.3.3的安装目录。
![](../../figures/IntelliJ_env_config_SDKs.png)
9.若完成步骤7配置点击OK完成配置。Rebuild项目若IDEA不能点击右上角的运行点击Plugin后下三角选择Edit Configurations...选项Run/Debug Configurations框中Use classpath of moudle选择generator点击ok等待安装完成即可点击运行按钮。若IDEA依然不能点击右上角的运行请重复以上全部操作
9.若完成以上步骤配置点击OK完成配置。Rebuild项目若IDEA不能点击右上角的运行点击Plugin后下三角选择Edit Configurations...选项Run/Debug Configurations框中Use classpath of moudle选择generator点击ok等待安装完成。
![](../../figures/IntelliJ_env_configurations.png)

View File

@ -50,20 +50,26 @@ Ability Template选择Empty Ability,单击Next。
![](../../figures/DevEco_step_generateSuccess.png)
6.此外工具还支持指定路径下.d.ts文件转换、同一目录下多个.d.ts文件同时转换等场景。
6.此外工具还支持指定路径下d.ts文件转换、同一目录下多个d.ts文件同时转换、多级模块d.ts文件转换、d.ts接口import多个文件等场景。
1指定路径下.d.ts文件转换可转换路径下所有.d.ts文件。Generate Napi Frame窗口中,接口文件文本框中填写待转换.d.ts文件路径此处为E:\demo生成框架路径填写生成文件所放路径此处为E:\deveco_project\entry\src\out编译脚本路径为E:\deveco_project\entry\src写然后点击ok。Generate Napi Frame窗口填写与生成文件如下图所示:
1指定路径下.d.ts文件转换可转换路径下所有.d.ts文件。Generate Napi Frame窗口填写与生成文件如下图所示
![](../../figures/DevEco_converse_dir.png)
![](../../figures/DevEco_converse_dir_succ.png)
2同一目录下多个.d.ts文件同时转换。项目中存在@ohos.napitest.d.ts和@ohos.power.d.ts两个文件且声明了import的d.ts文件。Generate Napi Frame窗口中,接口文件文本框中填写待转换.d.ts文件夹此处为“E:\deveco_project\entry\src”生成框架路径填写生成文件所放路径此处为E:\deveco_project\entry\src\out编译脚本路径为E:\deveco_project\entry\src写然后点击ok。Generate Napi Frame窗口填写与生成文件如下图所示:
2同一目录下多个.d.ts文件同时转换。项目中存在@ohos.napitest.d.ts和@ohos.power.d.ts两个文件且声明了import的d.ts文件。Generate Napi Frame窗口填写与生成文件如下图所示
![](../../figures/DevEco_converse_file.png)
![](../../figures/DevEco_converse_file_succ.png)
3将待转换的d.ts文件与被引用的d.ts文件放在同一目录下basic.d.ts文件放在待转换的d.ts文件上一级目录下。Generate Napi Frame窗口中选中启用import功能其他选项填写参考以上步骤点击ok。Generate Napi Frame窗口填写与生成文件如下图所示
![](../../figures/DevEco_converse_import.png)
![](../../figures/DevEco_converse_import_succ.png)
## 注意
对于ts文件中的number类型默认转为C++ uint32_t类型修改框架生成目录中的napitest.h类型赋值可实现number类型到C++指定数据类型的转换。

View File

@ -29,30 +29,34 @@ visual studio code 版本需1.62.0及以上。
![](../../figures/pic-plug-in-select-d-ts.png)
5.鼠标在.d.ts上单击右键选择“ Generate Napi Frame”选项工具打开 Generate Napi Frame窗口。选择方式有.d.ts文件、文件夹两种方式此处以.d.ts文件为例选择接口文件文本框中默认填写.d.ts文件路径此处不修改生成框架路径文本框填写生成文件所放文件夹绝对路径编译脚本路径文本框选填此处不填写,然后点击ok。
5.鼠标在.d.ts上单击右键选择“ Generate Napi Frame”选项工具打开 Generate Napi Frame窗口。选择方式有.d.ts文件、文件夹两种方式此处以.d.ts文件为例选择接口文件文本框中默认填写.d.ts文件路径此处不修改生成框架路径文本框填写生成文件所放文件夹绝对路径编译脚本路径文本框选填然后点击ok。
![](../../figures/pic-plug-in-gen-c++.png)
![](../../figures/pic-generator-napi-frame.png)
6.转换成功工具右下角就会提示“Generated successfully”的信息并且在.d.ts文件当前目录下生成对应文件如:
6.转换成功后,工具右下角就会提示“Generated successfully”的信息并且在.d.ts文件当前目录下生成对应文件下所示
![](../../figures/pic-plug-in-gen-sucess.png)
7.此外,工具还支持指定路径下.d.ts文件转换、同一目录下多个.d.ts文件同时转换、多级模块.d.ts文件转换等场景。
1指定路径下.d.ts文件转换可转换路径下所有.d.ts文件。Generate Napi Frame窗口中选择方式修改为文件夹;选择接口文件文本框中填写待转换.d.ts文件路径此处为E:\demo生成框架路径填写生成文件所放路径此处为项目当前路径编译脚本路径选填此处不填写然后点击ok。Generate Napi Frame窗口填写与生成文件如下图所示
1指定路径下.d.ts文件转换可转换路径下所有.d.ts文件。Generate Napi Frame窗口中选择方式修改为文件夹,其他选项参考以上步骤然后点击ok。Generate Napi Frame窗口填写与生成文件如下图所示
![](../../figures/pic-plug-in-gen-dir-sucess.png)
2同一目录下多个.d.ts文件同时转换。项目中存在@ohos.napitest.d.ts和@ohos.power.d.ts两个文件且声明了import的d.ts文件。Generate Napi Frame窗口中选择方式修改为.d.ts文件选择接口文件文本框中填写待转换.d.ts文件此处为“E:\napi_tool_new\@ohos.napitest.d.ts,E:\napi_tool_new\@ohos.power.d.ts”生成框架路径填写生成文件所放路径此处为项目当前路径编译脚本路径选填此处不填写然后点击ok。Generate Napi Frame窗口填写与生成文件如下图所示
2同一目录下多个.d.ts文件同时转换。项目中存在@ohos.napitest.d.ts和@ohos.power.d.ts两个文件且声明了import的d.ts文件。Generate Napi Frame窗口中选择生成方式修改为.d.ts文件选择接口文件文本框中填写“E:\napi_tool_new\@ohos.napitest.d.ts,E:\napi_tool_new\@ohos.power.d.ts”,其他选项参考以上步骤然后点击ok。
![](../../figures/pic-plug-in-gen-files-sucess.png)
3)多级模块.d.ts文件转换。项目中存在@ohos.napi_.test.A.d.ts文件Generate Napi Frame窗口中,选择方为.d.ts文件选择接口文件文本框中填写待转换.d.ts文件此处为“E:\napi_tool_new\@ohos.napi_.test.A.d.ts”生成框架路径填写生成文件所放路径此处为项目当前路径编译脚本路径选填此处不填写然后点击ok。Generate Napi Frame窗口填写与生成文件如下图所示:
3)多级模块.d.ts文件转换。项目中存在@ohos.napi_.test.A.d.ts文件Generate Napi Frame窗口填写与生成文件如下图所示
![](../../figures/pic-plug-in-gen-module-sucess.png)
4将待转换的d.ts文件与被引用的d.ts文件放在同一目录下basic.d.ts文件放在待转换的d.ts文件上一级目录下。Generate Napi Frame窗口中选中启用import功能其他选项填写参考以上步骤点击ok。Generate Napi Frame窗口填写与生成文件如下图所示
![](../../figures/pic-plug-in-gen-import-sucess.png)
## 注意
对于ts文件中的number类型默认转为C++ uint32_t类型修改框架生成目录中的napitest.h类型赋值可实现number类型到C++指定数据类型的转换。

View File

@ -13,18 +13,29 @@
│ | ├── storytest # story测试代码
│ | | ├── test_$ # ts文件输入以$开头的函数测试用例
│ | | ├── test_[] # ts文件输入[]格式数组测试用例
│ | | ├── test_any # ts文件输入any测试用例
│ | | ├── test_any[] # ts文件输入any数组测试用例
│ | | ├── test_array # ts文件输入array<>格式数组测试用例
│ | | ├── test_test_array_map # ts文件输入map数组测试用例
│ | | ├── test_bool # ts文件输入boolean测试用例
│ | | ├── test_callback # ts文件输入callback测试用例
│ | | ├── test_direct # 同步直接返回函数用例
│ | | ├── test_enum # ts文件输入enum测试用例
│ | | ├── test_enum_interface # ts文件输入interface嵌套enum测试用例
│ | | ├── test_enum_js # ts文件输入enum测试用例
│ | | ├── test_extends # ts文件输入继承测试用例
│ | | ├── test_interface # ts文件输入interface测试用例
│ | | ├── test_import # ts文件输入import测试用例
│ | | ├── test_interface_no_name # ts文件输入interface测试用例
│ | | ├── test_map # ts文件输入map测试用例
│ | | ├── test_namespace # ts文件输入namespace测试用例
│ | | ├── test_number # ts文件输入number测试用例
│ | | ├── test_object # ts文件输入object测试用例
│ | | ├── test_static # ts文件输入static的函数测试用例
│ | | ├── test_optional # ts文件输入可选参数的函数测试用例
│ | | ├── test_promise # ts文件输入promise的函数测试用例
│ | | ├── test_string # ts文件输入string测试用例
│ | | ├── test_union # ts文件输入联合参数测试用例
│ | | ├── basic.d.ts # 基础函数模板
│ | | ├── README_ZH.md # 测试用例使用指导
│ | | └── test.py # 用例执行脚本

View File

@ -1,40 +0,0 @@
/*
* Copyright (c) 2022 Shenzhen Kaihong Digital Industry Development Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { Callback } from './../basic';
declare namespace napitest {
interface Test1 {
fun1(type: 'callDetailsChange', callback: Callback<string>): void;
fun3(type: 'activate' | 'activating', name: string, callback: Callback<number>): void;
}
class Cat {
fun4(v: 'FixedParamClass', v1: number[]): boolean;
}
type WindowUpdateType = 'add' | 'remove' | 'bounds' | 'active' | 'focus';
function fun5(type: 'FixedParamName', tag: Array<string>): number;
function fun6(type: WindowUpdateType, v: number): string;
function fun7(type: 'add' | 'remove' | 'change', v: string[]): void;
function fun8(commands: Array<'set_status' | 'set_navigation'>, autoHide: boolean): void;
function fun9(v: string, v1: { name: number, type: 'delete' | 'return' }): number;
/*
interface Test {
name: 'IPv4' | 'IPv6';
}*/
}
export default napitest;

View File

@ -1,58 +0,0 @@
/*
* Copyright (c) 2022 Shenzhen Kaihong Digital Industry Development Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
const { fun5, fun6, fun7, fun8, fun9 } = require("./out/build/Release/napitest")
const { Test1, Cat } = require("./out/build/Release/napitest")
var assert = require("assert");
describe('test', function () {
function cb(ret) {
assert.strictEqual(ret, '')
}
function cb1(ret) {
assert.strictEqual(ret, 0)
}
it('test fun1', function () {
let test = new Test1()
test.fun1('callDetailsChange', cb)
});
it('test fun3', function () {
let test = new Test1()
test.fun3('activate', 'aaaa', cb1)
});
it('test fun4', function () {
let cat = new Cat()
let ret = cat.fun4('FixedParamClass', [15, 18])
assert.deepStrictEqual(ret, false)
});
it('test fun5', function () {
let ret = fun5('FixedParamName', ['aaa', 'bbb'])
assert.deepStrictEqual(ret, 0)
});
it('test fun6', function () {
let ret = fun6('add', 15)
assert.deepStrictEqual(ret, '')
});
it('test fun7', function () {
let ret = fun7('remove', ['aaa', 'bbb'])
assert.deepStrictEqual(typeof ret, 'undefined')
});
});