diff --git a/README_zh.md b/README_zh.md index e825d6dc..3f5d8e38 100755 --- a/README_zh.md +++ b/README_zh.md @@ -22,7 +22,6 @@ │ │ | |── extend # 扩展模块,包括gn文件生成、linux环境适配代码等 │ │ | |── generate # 生成器 │ │ | └── tools # 公共模块代码,包括消息体校验、文件读写、正则表达式转换等 - │ │ └── generator #IntelliJ IDEA插件代码 │ ├── test # UT、ST测试 │ ├── FAQ # NAPI框架工具问题反馈 │ └── README # 工具使用指导 diff --git a/docs/DEVELOP_ZH.md b/docs/DEVELOP_ZH.md index 38fef839..50a0d811 100755 --- a/docs/DEVELOP_ZH.md +++ b/docs/DEVELOP_ZH.md @@ -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特性测试确保工具的可用性。左键单击以下链接了解详情: diff --git a/docs/INSTRUCTION_ZH.md b/docs/INSTRUCTION_ZH.md index c555ed4d..2ba2f9dd 100755 --- a/docs/INSTRUCTION_ZH.md +++ b/docs/INSTRUCTION_ZH.md @@ -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 .d.ts file - -o, --out 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) ### 注意 diff --git a/docs/INTEGRATION_TESTING_ZH.md b/docs/INTEGRATION_TESTING_ZH.md index 884e6c06..1261c9b1 100755 --- a/docs/INTEGRATION_TESTING_ZH.md +++ b/docs/INTEGRATION_TESTING_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********* ## 相关仓 diff --git a/figures/DevEco_converse_dir.png b/figures/DevEco_converse_dir.png index fde09c3b..75e1cb31 100755 Binary files a/figures/DevEco_converse_dir.png and b/figures/DevEco_converse_dir.png differ diff --git a/figures/DevEco_converse_dir_succ.png b/figures/DevEco_converse_dir_succ.png index 1ecaec55..cf74510f 100755 Binary files a/figures/DevEco_converse_dir_succ.png and b/figures/DevEco_converse_dir_succ.png differ diff --git a/figures/DevEco_converse_file.png b/figures/DevEco_converse_file.png index 299e98d8..7ed2a3f4 100755 Binary files a/figures/DevEco_converse_file.png and b/figures/DevEco_converse_file.png differ diff --git a/figures/DevEco_converse_file_succ.png b/figures/DevEco_converse_file_succ.png index b316b694..3ff7130f 100755 Binary files a/figures/DevEco_converse_file_succ.png and b/figures/DevEco_converse_file_succ.png differ diff --git a/figures/DevEco_converse_import.png b/figures/DevEco_converse_import.png new file mode 100755 index 00000000..120fea4e Binary files /dev/null and b/figures/DevEco_converse_import.png differ diff --git a/figures/DevEco_converse_import_succ.png b/figures/DevEco_converse_import_succ.png new file mode 100755 index 00000000..1b4c59ad Binary files /dev/null and b/figures/DevEco_converse_import_succ.png differ diff --git a/figures/DevEco_step_generate.png b/figures/DevEco_step_generate.png index 68e93cbc..ce752ec6 100755 Binary files a/figures/DevEco_step_generate.png and b/figures/DevEco_step_generate.png differ diff --git a/figures/DevEco_step_generateSuccess.png b/figures/DevEco_step_generateSuccess.png index d2b10a20..27bdc84a 100755 Binary files a/figures/DevEco_step_generateSuccess.png and b/figures/DevEco_step_generateSuccess.png differ diff --git a/figures/DevEco_step_generate_ok.png b/figures/DevEco_step_generate_ok.png index db626c8d..4f570881 100755 Binary files a/figures/DevEco_step_generate_ok.png and b/figures/DevEco_step_generate_ok.png differ diff --git a/figures/DevEco_step_project.png b/figures/DevEco_step_project.png index ed31b740..ac74465e 100755 Binary files a/figures/DevEco_step_project.png and b/figures/DevEco_step_project.png differ diff --git a/figures/IntelliJ_env_module_root.png b/figures/IntelliJ_env_module_root.png index 54a4fc52..2d245b43 100644 Binary files a/figures/IntelliJ_env_module_root.png and b/figures/IntelliJ_env_module_root.png differ diff --git a/figures/pic-d-ts-transition.png b/figures/pic-d-ts-transition.png index 8df892e3..e3c0266d 100755 Binary files a/figures/pic-d-ts-transition.png and b/figures/pic-d-ts-transition.png differ diff --git a/figures/pic-generator-napi-frame.png b/figures/pic-generator-napi-frame.png index 06b5bdbc..fddc912b 100755 Binary files a/figures/pic-generator-napi-frame.png and b/figures/pic-generator-napi-frame.png differ diff --git a/figures/pic-plug-in-gen-dir-sucess.png b/figures/pic-plug-in-gen-dir-sucess.png index f7c23a1f..5fc43e2b 100755 Binary files a/figures/pic-plug-in-gen-dir-sucess.png and b/figures/pic-plug-in-gen-dir-sucess.png differ diff --git a/figures/pic-plug-in-gen-files-sucess.png b/figures/pic-plug-in-gen-files-sucess.png index 1495bcc3..70f96555 100755 Binary files a/figures/pic-plug-in-gen-files-sucess.png and b/figures/pic-plug-in-gen-files-sucess.png differ diff --git a/figures/pic-plug-in-gen-import-sucess.png b/figures/pic-plug-in-gen-import-sucess.png new file mode 100755 index 00000000..93f6180f Binary files /dev/null and b/figures/pic-plug-in-gen-import-sucess.png differ diff --git a/figures/pic-plug-in-gen-module-sucess.png b/figures/pic-plug-in-gen-module-sucess.png index 77d037b4..6edd5651 100755 Binary files a/figures/pic-plug-in-gen-module-sucess.png and b/figures/pic-plug-in-gen-module-sucess.png differ diff --git a/figures/pic-plug-in-gen-sucess.png b/figures/pic-plug-in-gen-sucess.png index 066faf8a..13c0186d 100755 Binary files a/figures/pic-plug-in-gen-sucess.png and b/figures/pic-plug-in-gen-sucess.png differ diff --git a/napi_IntelliJ_plugin/docs/DEVELOP_ZH.md b/napi_IntelliJ_plugin/docs/DEVELOP_ZH.md index a705337c..bff56498 100755 --- a/napi_IntelliJ_plugin/docs/DEVELOP_ZH.md +++ b/napi_IntelliJ_plugin/docs/DEVELOP_ZH.md @@ -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) diff --git a/napi_IntelliJ_plugin/docs/INSTRUCTION_ZH.md b/napi_IntelliJ_plugin/docs/INSTRUCTION_ZH.md index 831acada..446acb1a 100755 --- a/napi_IntelliJ_plugin/docs/INSTRUCTION_ZH.md +++ b/napi_IntelliJ_plugin/docs/INSTRUCTION_ZH.md @@ -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++指定数据类型的转换。 diff --git a/napi_vs_plugin/docs/INSTRUCTION_ZH.md b/napi_vs_plugin/docs/INSTRUCTION_ZH.md index 5e423132..c6f869fc 100644 --- a/napi_vs_plugin/docs/INSTRUCTION_ZH.md +++ b/napi_vs_plugin/docs/INSTRUCTION_ZH.md @@ -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++指定数据类型的转换。 diff --git a/test/storytest/README_ZH.md b/test/storytest/README_ZH.md index 1f76a202..b57eab37 100755 --- a/test/storytest/README_ZH.md +++ b/test/storytest/README_ZH.md @@ -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 # 用例执行脚本 diff --git a/test/storytest/test_type/@ohos.test.d.ts b/test/storytest/test_type/@ohos.test.d.ts deleted file mode 100755 index 81b7fcb4..00000000 --- a/test/storytest/test_type/@ohos.test.d.ts +++ /dev/null @@ -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): void; - fun3(type: 'activate' | 'activating', name: string, callback: Callback): void; - } - - class Cat { - fun4(v: 'FixedParamClass', v1: number[]): boolean; - } - - type WindowUpdateType = 'add' | 'remove' | 'bounds' | 'active' | 'focus'; - function fun5(type: 'FixedParamName', tag: Array): 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; \ No newline at end of file diff --git a/test/storytest/test_type/test.js b/test/storytest/test_type/test.js deleted file mode 100755 index 77bc7dd7..00000000 --- a/test/storytest/test_type/test.js +++ /dev/null @@ -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') - }); -}); \ No newline at end of file