Modify the documents based on the tool support
Signed-off-by: zhaojunxia <zhaojunxia@kaihong.com>
@ -22,7 +22,6 @@
|
||||
│ │ | |── extend # 扩展模块,包括gn文件生成、linux环境适配代码等
|
||||
│ │ | |── generate # 生成器
|
||||
│ │ | └── tools # 公共模块代码,包括消息体校验、文件读写、正则表达式转换等
|
||||
│ │ └── generator #IntelliJ IDEA插件代码
|
||||
│ ├── test # UT、ST测试
|
||||
│ ├── FAQ # NAPI框架工具问题反馈
|
||||
│ └── README # 工具使用指导
|
||||
|
@ -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框中点击ok,jar包生成完成后在工具右下角提示jar包生成成功,且包含jar包存放位置。
|
||||
|
||||
![](../figures/IntelliJ_env_built_jar.png)
|
||||
|
||||
![](../figures/IntelliJ_env_select_moudles.png)
|
||||
|
||||
![](../figures/IntelliJ_env_built_jar_success.png)
|
||||
## 工具测试
|
||||
进行工具二次开发后,本地可进行单元测试、story特性测试确保工具的可用性。左键单击以下链接了解详情:
|
||||
|
||||
|
@ -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)
|
||||
|
||||
### 注意
|
||||
|
||||
|
@ -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*********
|
||||
|
||||
## 相关仓
|
||||
|
||||
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 49 KiB |
Before Width: | Height: | Size: 133 KiB After Width: | Height: | Size: 76 KiB |
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 130 KiB After Width: | Height: | Size: 86 KiB |
BIN
figures/DevEco_converse_import.png
Executable file
After Width: | Height: | Size: 88 KiB |
BIN
figures/DevEco_converse_import_succ.png
Executable file
After Width: | Height: | Size: 100 KiB |
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 77 KiB |
Before Width: | Height: | Size: 87 KiB After Width: | Height: | Size: 107 KiB |
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 80 KiB |
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 62 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 7.7 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 75 KiB |
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 78 KiB |
BIN
figures/pic-plug-in-gen-import-sucess.png
Executable file
After Width: | Height: | Size: 77 KiB |
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 75 KiB |
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 88 KiB |
@ -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 11(213版本只支持 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 11(213版本只支持 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)
|
||||
|
||||
|
@ -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++指定数据类型的转换。
|
||||
|
@ -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++指定数据类型的转换。
|
||||
|
@ -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 # 用例执行脚本
|
||||
|
40
test/storytest/test_type/@ohos.test.d.ts
vendored
@ -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;
|
@ -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')
|
||||
});
|
||||
});
|