# ohos-rs **Repository Path**: csdnliming/ohos-rs ## Basic Information - **Project Name**: ohos-rs - **Description**: napi-rs for HarmonyOS - **Primary Language**: Rust - **License**: MIT - **Default Branch**: ohos - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2024-02-28 - **Last Updated**: 2024-06-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # napi-rs-oh > `napi-rs` HarmonyOS版本。整体代码来源于[napi-rs](https://github.com/napi-rs/napi-rs),针对鸿蒙系统做了部分裁剪和整理 ## 环境准备 - OpenHarmony SDK 配置环境变量为`OHOS_NDK_HOME`,进入之后目录结构应该包括 native ets js等目录 - Rust MSRV 1.65.0 ## 快速开始 1. 安装脚手架工具 ```shell cargo install ohrs ``` 2. 初始化项目 ```shell ohrs init test ``` 3. 构建产物 ```shell cd test ohrs build ``` ## 指南 目前所有API基本对齐napi,你可以在[example](https://github.com/ohos-rs/example)中看到在HarmonyOS工程中的应用。 能力支持: - 脚手架支持(支持workspace模式) - CI 能力支持 - [Harmony native binding](https://github.com/ohos-rs/ohos-native-bindings) ## Packages | Package | Version | Description | |------------------------------------------------------------|---------| -------------------------------------------------------------------------- | | [`@ohos-rs/crc32`](https://github.com/ohos-rs/crc32-ohos) | 0.0.1 | Fastest `CRC32` implementation using `SIMD` | | [`@ohos-rs/jieba`](https://github.com/ohos-rs/jieba-ohos) | 0.0.1 | [`jieba-rs`](https://github.com/messense/jieba-rs) binding | ## 社区 你可以在 [这里](https://github.com/ohos-rs/example/issues) 提交相关问题、建议和需求场景。 ## F&Q 1. 为什么Rust构建产物体积比官方的CMAKE构建体积大? Rust本身的产物体积会比C++大很多。即使使用了各种优化手段因为零抽象成本等各种原因,本身构建的代码体积就会比C++大。 - 如果对于体积较为敏感的话,可以参考[min-sized-rust](https://github.com/johnthagen/min-sized-rust)进行优化。 - 另外可以使用NDK提供的strip工具进行优化。工具路径:`${OHOS_NDK_HOME}/native/llvm/bin/llvm-strip` 2. 为什么 `Option` 参数会报错? 目前OpenHarmony NDK中的 `napi_typeof` 方法实现有点问题,对于可选参数无法默认处理成 undefined 值。已向团队提相关问题,待修复即可。 3. 为什么 `Buffer` 在 Native 和 ArkTS 之间无法直接传递? ArkTS侧的 buffer实现跟Native侧的 Buffer实现不一致,导致在跨语言传递的时候出现问题。已向官方提相关问题,待修复即可。