style: add napi IntelliJ plugin INSTRUCTION_BUILD_ZH.md and modify napi release-notes docs

Signed-off-by: gou-jingjing <goujingjing@kaihong.com>
This commit is contained in:
gou-jingjing 2023-01-20 14:53:20 +08:00
parent ef136acd9d
commit f17211c593
8 changed files with 168 additions and 31 deletions

View File

@ -130,4 +130,4 @@ napi_generator/examples/ts
## 相关仓
暂无
[ts生成工具README_zh](https://gitee.com/openharmony/napi_generator/blob/master/docs/ts/README_ZH.md)

View File

@ -2,11 +2,12 @@
## 版本规划
2022.12.30提供1.3版本 基本完善工具C++支持能力2022.12.30前完成迭代并提交代码具体特性见表1。
2023.01.30提供1.4版本 基本完善工具C++支持能力2023.01.30前完成迭代并提交代码具体特性见表1。
**表 1** 2022.12.30待支持特性
**表 1** 2023.01.30待支持特性
<a name="table143385853320"></a>
<table><thead align="left"><tr id="row53375863312"><th class="cellrowborder" valign="top" width="25%" id="mcps1.2.3.1.1"><p id="p20331858193317"><a name="p20331858193317"></a><a name="p20331858193317"></a>类别</p>
</th>
<th class="cellrowborder" valign="top" width="45%" id="mcps1.2.3.1.2"><p id="p1133115820331"><a name="p1133115820331"></a><a name="p1133115820331"></a>待开发特性</p>
@ -24,15 +25,10 @@
</td>
<tr id="row119944512385"><td class="cellrowborder" valign="top" width="25.77%" headers="mcps1.2.3.1.1 "><p id="p919862210573"><a name="p919862210573"></a><a name="p919862210573"></a>文件</p>
</td>
<td class="cellrowborder" valign="top" width="74.22999999999999%" headers="mcps1.2.3.1.2 "><a name="ul12374158862"></a><a name="ul12374158862"></a><ul id="ul12374158862"><li>支持根据*.h生成*.d.ts文件</li></ul>
<td class="cellrowborder" valign="top" width="74.22999999999999%" headers="mcps1.2.3.1.2 "><a name="ul12374158862"></a><a name="ul12374158862"></a><ul id="ul12374158862"><li>支持适配命令行*.h生成*.d.ts文件的VSCode插件</li><li>支持Ubuntu环境下适配命令行ts接口文件名格式如下ohos.A.B.C.d.ts文件转换的VSCode插件选择接口文件后自适应填入生成文件路径</li><li>支持适配命令行的VSCode插件自适应浅色背景</li><li>支持适配命令行的VSCode插件UX界面对齐hcs可视化工具</li></ul>
</td>
</tr>
</tr>
<tr id="row834358143319"><td class="cellrowborder" valign="top" width="25.77%" headers="mcps1.2.3.1.1 "><p id="p1818191195713"><a name="p1818191195713"></a><a name="p1818191195713"></a>可靠性</p>
</td>
<td class="cellrowborder" valign="top" width="74.22999999999999%" headers="mcps1.2.3.1.2 "><a name="ul4367144411512"></a><a name="ul4367144411512"></a><ul id="ul4367144411512"><li>整改生成代码规范</li></ul>
</td>
</tr>
<tr id="row119944512385"><td class="cellrowborder" valign="top" width="25.77%" headers="mcps1.2.3.1.1 "><p id="p919862210573"><a name="p919862210573"></a><a name="p919862210573"></a>可维护性</p>
</td>
<td class="cellrowborder" valign="top" width="74.22999999999999%" headers="mcps1.2.3.1.2 "><a name="ul12374158862"></a><a name="ul12374158862"></a><ul id="ul12374158862"><li>增加debug信息</li></ul>

BIN
figures/DevEco_build.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View File

@ -20,7 +20,7 @@
[下载链接](https://www.jetbrains.com/idea/download/)
3.打开IDEA Community应用程序
3.打开IDEA Community应用程序
依次点击项目File>Open 选择napi_generator/napi_IntelliJ_plugin项目文件夹。
![](../../../figures/IntelliJ_env_config_open_proj.png)
@ -32,11 +32,11 @@
Project Settings > Modules 新建Modules。点击上方“-”删除原有的Modules然后点击“+”选择 New Module。
![](../../../figures/IntelliJ_env_Proj_Module.png)
6.配置Module SDK.
6.配置Module SDK
在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.
7.配置Content root
Content root选择~/napi_generator/napi_IntelliJ_plugin文件夹module name填写generator。点击Finish若出现提示已存在是否覆盖的提示请点“Yes”完成配置。
![](../../../figures/IntelliJ_env_module_root.png)

View File

@ -0,0 +1,115 @@
# DevEco Studio编译打包说明
## 简介
本文主要介绍使用IntelliJ插件将ts接口文件名格式如下ohos.A.B.C.d.ts文件转换后如何在DevEco Studio进行编译打包。
## 准备
1. 待转换的@napitest.test.d.ts文件如下
```
declare namespace napitest {
function fun1(v1: number): number;
}
export default napitest;
```
2. 生成的napitest.cpp给out赋初值
```
out = 23;
```
3. 生成的CmakeLists.txt中引入hilog库libhilog_ndk.z.so
```
target_link_libraries(test PUBLIC libace_napi.z.so libuv.so libhilog_ndk.z.so)
```
4. 在生成的napitest_middle.cpp中打印hilog日志
```
#include "hilog/log.h"
// LOG
static unsigned int logDomain = 0xD001234;
static const char* APP_TAG = "napitest";
#define MYAPP_LOGERR(type, ...) ((void)OH_LOG_Print((type), LOG_ERROR, logDomain, APP_TAG, __VA_ARGS__));
...
//在需要的地方打印日志
MYAPP_LOGERR(LOG_APP, "==========test fun1_middle begin==========");
...
MYAPP_LOGERR(LOG_APP, "----------test fun1_middle result = %{public}d ----------", vio->out);
...
MYAPP_LOGERR(LOG_APP, "==========test fun1_middle end==========");
```
5. 在DevEco Studio中增加调用napi方法的测试用例。其中修改index.js文件内容如下
```
import router from '@ohos.router';
import napitest from 'libtest.so';
export default {
data: {
title: ""
},
onInit(){
this.title = this.$t('strings.world');
},
onclick: function () {
router.push({
url: "pages/index/index.js"
})
},
ontest: function () {
console.log("napitest begin AAAAAAAAAAAAAAAAAA")
let testNum = napitest.fun1(1);
console.info("napitest testNum = " + testNum);
console.log("napitest end AAAAAAAAAAAAAAAAAA")
}
}
```
修改index.html文件内容如下
```
<!--index.hml-->
<div class="container">
<text class="title">
Hello World
</text>
<!-- 添加按钮值为Next并绑定onclick方法-->
<input class="btn" type="button" value="Next" onclick="onclick"></input>
<input class="btn" type="button" value="napitest" onclick="ontest"></input>
</div>
```
## 使用说明
1. 在File->Project Structure->Project->Signing Configs自动签名点击OK即可。
![](../../../figures/DevEco_build_SignConfigs.png)
2. 连接设备,并点击右上角三角符号编译打包。
![](../../../figures/DevEco_build.png)
4. 执行成功后设备中会出现安装的APP并进入APP测试页面点击测试按钮DevEco Studio控制台中Log->OpenLog中会出现以下结果
```
01-01 04:34:40.862 5993-6003/com.example.myapplication D 03b00/JSApp: app Log: napitest begin AAAAAAAAAAAAAAAAAA
01-01 04:34:40.862 5993-6003/com.example.myapplication E 01234/napi: ==========test fun1_middle begin==========
01-01 04:34:40.862 5993-6003/com.example.myapplication E 01234/napi: ----------test fun1_middle result = 23 ----------
01-01 04:34:40.862 5993-6003/com.example.myapplication E 01234/napi: ==========test fun1_middle end==========
01-01 04:34:40.862 5993-6003/com.example.myapplication I 03b00/JSApp: app Log: napitest testNum = 23
01-01 04:34:40.862 5993-6003/com.example.myapplication D 03b00/JSApp: app Log: napitest end AAAAAAAAAAAAAAAAAA
01-01 04:35:26.914 370-890/foundation D 01120/BundleMgrService: [inner_bundle_info.cpp(GetBundleWithAbilities):1733] bundleName:com.example.callbacktest userid:100
```
## 相关仓
暂无

View File

@ -10,9 +10,9 @@ IntelliJ插件下载路径如下选择napi_generator_outputs.zip中generator.
### 依赖
系统:不限
系统:建议Windows 10
开发工具DevEco stdio
开发工具DevEco Studio
### 使用指导
@ -48,8 +48,8 @@ Ability Template选择Empty Ability,单击Next。
5.执行结束后会在out目录下生成napi框架代码文件。
## 集成测试
NAPI框架代码生成后系统框架开发者进行二次开发后即可集成到OpenHarmony编译系统生成对应的库文件供应用开发者调用接口。工具集成测试的具体操作步骤可以左键单击以下链接了解:
## DevEco Studio编译打包说明
NAPI框架代码生成后系统框架开发者进行二次开发后可在DevEco Studio进行编译打包生成对应的库文件供应用开发者调用接口。DevEco Studio编译打包说明的具体操作步骤可以左键单击以下链接了解:
[工具集成测试](https://gitee.com/openharmony/napi_generator/blob/master/docs/INTEGRATION_TESTING_ZH.md)
[DevEco Studio编译打包说明](https://gitee.com/openharmony/napi_generator/blob/master/docs/napi/INSTRUCTION_BUILD_ZH.md)

View File

@ -1,42 +1,68 @@
# napi_generator-1.22022-09-30
# napi_generator-1.32022-12-30
## 版本概述<a name="section249611124916"></a>
发布napi_generator-1.2
发布napi_generator-1.3
## 版本特性<a name="section249611124917"></a>
**表 1** 已支持特性
<a name="table143385853320"></a>
<table><thead align="left"><tr id="row53375863312"><th class="cellrowborder" valign="top" width="25.77%" id="mcps1.2.3.1.1"><p id="p20331858193317"><a name="p20331858193317"></a><a name="p20331858193317"></a>类别</p>
<table><thead align="left"><tr id="row53375863312"><th class="cellrowborder" valign="top" width="18%" id="mcps1.2.3.1.1"><p id="p20331858193317"><a name="p20331858193317"></a><a name="p20331858193317"></a><ul>类别</ul></p>
</th>
<th class="cellrowborder" valign="top" width="74.22999999999999%" id="mcps1.2.3.1.2"><p id="p1133115820331"><a name="p1133115820331"></a><a name="p1133115820331"></a>支持特性</p>
<th class="cellrowborder" valign="top" width="70%" id="mcps1.2.3.1.2"><p id="p1133115820331"><a name="p1133115820331"></a><a name="p1133115820331"></a><ul>支持特性</ul></p>
</th>
<th class="cellrowborder" valign="top" width="12%" id="mcps1.2.3.1.3"><p id="p1133115820332"><a name="p1133115820332"></a><a name="p1133115820332"></a><ul>版本号</ul></p>
</th>
</tr>
</thead>
<tbody><tr id="row333115812331"><td class="cellrowborder" valign="top" width="25.77%" headers="mcps1.2.3.1.1 "><p id="p2142111345714"><a name="p2142111345714"></a><a name="p2142111345714"></a>变量/返回值</p>
<tbody><tr id="row333115812331"><td class="cellrowborder" valign="top" width="18%" headers="mcps1.2.3.1.1 "><p id="p2142111345714"><a name="p2142111345714"></a><a name="p2142111345714"></a><ul>变量/返回值</ul></p>
</td>
<td class="cellrowborder" valign="top" width="74.22999999999999%" headers="mcps1.2.3.1.2 "><a name="ul9264132010"></a><a name="ul9264132010"></a><ul id="ul9264132010"><li>支持ts语言中string、number、boolean基础类型的变量/函数入参自动转换为C++类型</li><li>支持ts语言中interface及匿名interface复合类型的变量/函数入参自动转换为C++类型</li><li>支持ts语言中enum复合类型变量/函数入参自动转换为C++类型</li><li>支持ts语言中string、number、boolean、enum、interface、map数组类型的变量/函数入参自动转换为C++类型且数组书写方式可以为array<>或[]两种</li><li>支持ts语言中string、number、boolean、array、map、interface的map类型的变量/函数入参自动转换为C++类型且map书写方式可以为{[key:string]:any}或Map<>两种</li> <li>支持ts接口文件中namespace域的any类型变量或函数参数转换为对应C++类型变量</li><li>支持ts接口文件中namespace域的object变量 转换为对应C++变量</li><li>支持ts接口文件中namespace域的可选变量 转换为对应的C++变量</li><li>支持ts接口文件中namespace域的多类型合并成新类型的变量转换为对应C++类型变量</li></ul>
<td class="cellrowborder" valign="top" width="70%" headers="mcps1.2.3.1.2 "><a name="ul9264132010"></a><a name="ul9264132010"></a><ul id="ul9264132010"><li>支持ts语言中string、number、boolean基础类型的变量/函数入参自动转换为C++类型</li><li>支持ts语言中interface及匿名interface复合类型的变量/函数入参自动转换为C++类型</li><li>支持ts语言中enum复合类型变量/函数入参自动转换为C++类型</li><li>支持ts语言中string、number、boolean、enum、interface、map数组类型的变量/函数入参自动转换为C++类型且数组书写方式可以为array<>或[]两种</li><li>支持ts语言中string、number、boolean、array、map、interface的map类型的变量/函数入参自动转换为C++类型且map书写方式可以为{[key:string]:any}或Map<>两种</li> <li>支持ts接口文件中namespace域的any类型变量或函数参数转换为对应C++类型变量</li><li>支持ts接口文件中namespace域的object变量 转换为对应C++变量</li><li>支持ts接口文件中namespace域的可选变量 转换为对应的C++变量</li><li>支持ts接口文件中namespace域的多类型合并成新类型的变量转换为对应C++类型变量</li></ul>
</td>
<td class="cellrowborder" valign="top" width="12%" headers="mcps1.2.3.1.3 "><p id="p2142111345715"><a name="p2142111345715"></a><a name="p2142111345715"></a><ul>1.2</ul></p>
</td>
</tr>
<tr id="row334175803317"><td class="cellrowborder" valign="top" width="25.77%" headers="mcps1.2.3.1.1 "><p id="p382391145710"><a name="p382391145710"></a><a name="p382391145710"></a>函数类型</p>
<tr id="row334175803317"><td class="cellrowborder" valign="top" width="18%" headers="mcps1.2.3.1.1 "><p id="p382391145710"><a name="p382391145710"></a><a name="p382391145710"></a><ul>函数类型</ul></p>
</td>
<td class="cellrowborder" valign="top" width="74.22999999999999%" headers="mcps1.2.3.1.2 "><a name="ul334485413318"></a><a name="ul334485413318"></a><ul id="ul334485413318"><li>支持ts语言中返回值、callback类型的同步函数自动转换为C++类型</li><li>支持ts语言中callback、promise类型的异步函数自动转换为C++类型</li><li>支持ts接口文件中namespace域的static函数自动转换为对应C++的函数</li><li>支持ts接口文件中namespace域的以$开头的函数自动转换为对应C++的自动函数</li><li>支持ts接口文件中namespace域的new函数</li><li>支持ts接口文件中namespace域的on注册、off去注册函数</li><li>支持ts接口文件中namespace域的箭头函数转换为对应C++的函数</li></ul>
<td class="cellrowborder" valign="top" width="70%" headers="mcps1.2.3.1.2 "><a name="ul334485413318"></a><a name="ul334485413318"></a><ul id="ul334485413318"><li>支持ts语言中返回值、callback类型的同步函数自动转换为C++类型</li><li>支持ts语言中callback、promise类型的异步函数自动转换为C++类型</li><li>支持ts接口文件中namespace域的static函数自动转换为对应C++的函数</li><li>支持ts接口文件中namespace域的以$开头的函数自动转换为对应C++的自动函数</li><li>支持ts接口文件中namespace域的new函数</li><li>支持ts接口文件中namespace域的on注册、off去注册函数</li><li>支持ts接口文件中namespace域的箭头函数转换为对应C++的函数</li></ul>
</td>
<td class="cellrowborder" valign="top" width="12%" headers="mcps1.2.3.1.3 "><p id="p2142111345716"><a name="p2142111345716"></a><a name="p2142111345716"></a><ul>1.2</ul></p>
</td>
</tr>
<tr id="row834358143319"><td class="cellrowborder" valign="top" width="25.77%" headers="mcps1.2.3.1.1 "><p id="p1818191195713"><a name="p1818191195713"></a><a name="p1818191195713"></a>interface</p>
<tr id="row834358143319"><td class="cellrowborder" valign="top" width="18%" headers="mcps1.2.3.1.1 "><p id="p1818191195713"><a name="p1818191195713"></a><a name="p1818191195713"></a><ul>interface</ul></p>
</td>
<td class="cellrowborder" valign="top" width="74.22999999999999%" headers="mcps1.2.3.1.2 "><a name="ul4367144411512"></a><a name="ul4367144411512"></a><ul id="ul4367144411512"><li>支持ts语言中interface域的变量、函数自动转换为C++类型</li><li>支持ts接口文件中interface继承class方式的声明 对应的C++实现</li><li>支持ts接口文件中interface继承interface方式的声明 对应的C++实现</li></ul>
<td class="cellrowborder" valign="top" width="70%" headers="mcps1.2.3.1.2 "><a name="ul4367144411512"></a><a name="ul4367144411512"></a><ul id="ul4367144411512"><li>支持ts语言中interface域的变量、函数自动转换为C++类型</li><li>支持ts接口文件中interface继承class方式的声明 对应的C++实现</li><li>支持ts接口文件中interface继承interface方式的声明 对应的C++实现</li></ul>
</td>
<td class="cellrowborder" valign="top" width="12%" headers="mcps1.2.3.1.3 "><p id="p2142111345717"><a name="p2142111345717"></a><a name="p2142111345717"></a><ul>1.2</ul></p>
</td>
</tr>
<tr id="row119944512385"><td class="cellrowborder" valign="top" width="25.77%" headers="mcps1.2.3.1.1 "><p id="p919862210573"><a name="p919862210573"></a><a name="p919862210573"></a>namespace</p>
<tr id="row119944512385"><td class="cellrowborder" valign="top" width="18%" headers="mcps1.2.3.1.1 "><p id="p919862210573"><a name="p919862210573"></a><a name="p919862210573"></a><ul>namespace</ul></p>
</td>
<td class="cellrowborder" valign="top" width="74.22999999999999%" headers="mcps1.2.3.1.2 "><a name="ul12374158862"></a><a name="ul12374158862"></a><ul id="ul12374158862"><li>支持ts语言中namespace域的变量、函数、interface自动转换为C++类型</li><li>支持ts接口文件中namespace域class转换为C++的class</li><li>支持ts接口文件中namespace域class继承转换为C++中继承的class</li> </ul>
<td class="cellrowborder" valign="top" width="70%" headers="mcps1.2.3.1.2 "><a name="ul12374158862"></a><a name="ul12374158862"></a><ul id="ul12374158862"><li>支持ts语言中namespace域的变量、函数、interface自动转换为C++类型</li><li>支持ts接口文件中namespace域class转换为C++的class</li><li>支持ts接口文件中namespace域class继承转换为C++中继承的class</li> </ul>
</td>
<td class="cellrowborder" valign="top" width="12%" headers="mcps1.2.3.1.3 "><p id="p2142111345718"><a name="p2142111345718"></a><a name="p2142111345718"></a><ul>1.2</ul></p>
</td>
</tr>
<tr id="row18711154213388"><td class="cellrowborder" valign="top" width="25.77%" headers="mcps1.2.3.1.1 "><p id="p111921822185713"><a name="p111921822185713"></a><a name="p111921822185713"></a>文件</p>
<tr id="row18711154213388"><td class="cellrowborder" valign="top" width="18%" headers="mcps1.2.3.1.1 " rowspan="2"><p id="p111921822185713"><a name="p111921822185713"></a><a name="p111921822185713"></a><ul>文件</ul></p>
</td>
<td class="cellrowborder" valign="top" width="74.22999999999999%" headers="mcps1.2.3.1.2 "><a name="ul94024441879"></a><a name="ul94024441879"></a><ul id="ul94024441879"><li>支持ts文件中namespace数据类型转换为C++类型</li><li>支持ts接口文件名格式如下ohos.A.B.C.d.ts的文件转换</li><li>支持命令行方式转换时参数为多个文件路径,相互之间用英文逗号分开</li><li>支持命令行方式转换时指定文件夹路径方式转换</li><li>支持ts文件中import自定义文件</li></ul>
<td class="cellrowborder" valign="top" width="70%" headers="mcps1.2.3.1.2 "><a name="ul94024441879"></a><a name="ul94024441879"></a><ul id="ul94024441879"><li>支持ts文件中namespace数据类型转换为C++类型</li><li>支持ts接口文件名格式如下ohos.A.B.C.d.ts的文件转换</li><li>支持命令行方式转换时参数为多个文件路径,相互之间用英文逗号分开</li><li>支持命令行方式转换时指定文件夹路径方式转换</li><li>支持ts文件中import自定义文件</li></ul>
</td>
<td class="cellrowborder" valign="top" width="12%" headers="mcps1.2.3.1.3 "><p id="p2142111345718"><a name="p2142111345718"></a><a name="p2142111345718"></a><ul>1.2</ul></p>
</td>
</tr>
<tr id="row18711154213389">
<td class="cellrowborder" valign="top" width="70%" headers="mcps1.2.3.1.2 "><a name="ul94024441880"></a><a name="ul94024441880"></a><ul id="ul94024441880"><li>支持Windows环境下适配命令行ts接口文件名格式如下ohos.A.B.C.d.ts文件转换的IntelliJ插件</li><li>支持适配命令行ts接口文件名格式如下ohos.A.B.C.d.ts文件转换的VSCode插件</li><li>支持根据*.h生成*.d.ts文件</li><li>支持命令行方式转换时参数为多个文件路径,相互之间用英文逗号分开</li><li>支持命令行方式转换时指定文件夹路径方式转换</li><li>支持Windows环境下适配命令行*.h生成*.d.ts文件的IntelliJ插件</li></ul>
</td>
<td class="cellrowborder" valign="top" width="12%" headers="mcps1.2.3.1.3 "><p id="p2142111345719"><a name="p2142111345719"></a><a name="p2142111345719"></a><ul>1.3</ul></p>
</td>
</tr>
<tr id="row119944512386"><td class="cellrowborder" valign="top" width="18%" headers="mcps1.2.3.1.1 "><p id="p919862210574"><a name="p919862210574"></a><a name="p919862210574"></a><ul>可靠性</ul></p>
</td>
<td class="cellrowborder" valign="top" width="70%" headers="mcps1.2.3.1.2 "><a name="ul12374158863"></a><a name="ul12374158863"></a><ul id="ul12374158863"><li>整改生成代码规范</li> </ul>
</td>
<td class="cellrowborder" valign="top" width="12%" headers="mcps1.2.3.1.3 "><p id="p2142111345720"><a name="p2142111345720"></a><a name="p2142111345720"></a><ul>1.3</ul></p>
</td>
</tr>
</tbody>