#open-harmony #harmony-os #ffi

ohos-sys

绑定到 OpenHarmony OS 的原生 API

8 个版本

0.2.2 2024 年 8 月 18 日
0.2.1 2024 年 7 月 23 日
0.1.0 2024 年 4 月 29 日

#111硬件支持

Download history 17/week @ 2024-05-02 5/week @ 2024-05-16 5/week @ 2024-05-23 1/week @ 2024-05-30 1/week @ 2024-06-06 1/week @ 2024-06-13 8/week @ 2024-06-20 18/week @ 2024-06-27 9/week @ 2024-07-04 15/week @ 2024-07-11 282/week @ 2024-07-18 626/week @ 2024-07-25 790/week @ 2024-08-01 968/week @ 2024-08-08 1573/week @ 2024-08-15

4,087 每月下载
用于 2 crates

Apache-2.0

255KB
4K SLoC

ohos-sys

OpenHarmony OS 原生 API 的 FFI 绑定。查看文档以获取支持的组件列表。此 crate 正在积极开发中,并未官方与 OpenHarmony OS 联合。

开发

当前的绑定是通过 bindgen 使用 scripts/generate_bindings.sh 生成的。为每个 API 版本生成一个单独的文件,并且(假设没有破坏性更改)将新添加的功能手动复制到 apiXX_additions.rs 文件中,如果选择了 feature = api-XX,则将其作为模块包含。应将生成的文件 drawing_apiXX.rs 提交到版本控制中,这样我们可以在给定 API 级别的补丁版本上轻松重新运行脚本并查看更改了什么。然而,该文件本身并不需要,并且将不包括在 crates.io 发布中。

贡献

OpenHarmony API 还缺少很多。请随意贡献缺少的 API,但请确保调整脚本,以便您的绑定可重复!请还检查以下内容

  • 确保不将不透明结构定义继承为 CopyCloneDebug
  • 列出所有不必要的类型定义,例如来自 C 标准库的。
  • 最好使用 libclang 以 C 模式生成绑定。然而,如果由于 OpenHarmony SDK 的问题,头文件不遵守 C 规范,则将 libclang 设置为 C++ 模式是完全可以的。
  • 确保在新组件后面使用 cargo 功能,并在 Cargo.toml 中记录该功能。
  • 如果您没有使用 API 级别 10 生成绑定,请指定您使用哪个 API 级别生成绑定,并在相应的 api-level 功能标志后面保护生成的模块。
  • 安装 bindgen:我们需要至少 bindgen 0.70.0,启用 prettyplease 功能。您可以通过运行 cargo install bindgen-cli --features prettyplease

许可证

此 crate 在 Apache-2.0 许可证下发布,与 OpenHarmony OS SDK 相匹配。

依赖项