Skip to content
/ ohos-rs Public
forked from ohos-rs/ohos-rs

A framework for building compiled OpenHarmony SDK in Rust via Node-API(Forked from napi-rs)

License

Notifications You must be signed in to change notification settings

ldm0/ohos-rs

 
 

Repository files navigation

napi-rs-oh

napi-rs HarmonyOS版本。整体代码来源于napi-rs,针对鸿蒙系统做了部分裁剪和整理

环境准备

  • OpenHarmony SDK
    配置环境变量为OHOS_NDK_HOME,进入之后目录结构应该包括 native ets js等目录

  • Rust
    MSRV 1.65.0

快速开始

  1. 安装脚手架工具
cargo install ohrs
  1. 初始化项目
ohrs init test
  1. 构建产物
cd test

ohrs build

指南

目前所有API基本对齐napi,你可以在example中看到在HarmonyOS工程中的应用。

Packages

Package Version Description
@ohos-rs/crc32 0.0.1 Fastest CRC32 implementation using SIMD
@ohos-rs/jieba 0.0.1 jieba-rs binding

社区

你可以在 这里 提交相关问题、建议和需求场景。

F&Q

  1. 为什么Rust构建产物体积比官方的CMAKE构建体积大?
    Rust本身的产物体积会比C++大很多。即使使用了各种优化手段因为零抽象成本等各种原因,本身构建的代码体积就会比C++大。

    • 如果对于体积较为敏感的话,可以参考min-sized-rust进行优化。
    • 另外可以使用NDK提供的strip工具进行优化。工具路径:${OHOS_NDK_HOME}/native/llvm/bin/llvm-strip
  2. 为什么 Option<T> 参数会报错?
    目前OpenHarmony NDK中的 napi_typeof 方法实现有点问题,对于可选参数无法默认处理成 undefined 值。已向团队提相关问题,待修复即可。

  3. 为什么 Buffer 在 Native 和 ArkTS 之间无法直接传递?
    ArkTS侧的 buffer实现跟Native侧的 Buffer实现不一致,导致在跨语言传递的时候出现问题。已向官方提相关问题,待修复即可。

TODO

  • CI支持 目前鸿蒙开放对于linux下通过NDK构建的能力支持太弱,等到API10放开后支持

  • 鸿蒙官方底层能力包装 如hilog,vulkan,OpenGL等能力

About

A framework for building compiled OpenHarmony SDK in Rust via Node-API(Forked from napi-rs)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 99.7%
  • Other 0.3%