5个版本 (破坏性更新)
0.7.0 | 2024年7月5日 |
---|---|
0.4.0 | 2024年5月14日 |
0.3.0 | 2024年5月3日 |
0.2.0 | 2024年3月20日 |
0.1.0 | 2024年1月26日 |
#4 in #uniffi
每月35次下载
80KB
2K SLoC
包含 (JAR文件,60KB) gradle-wrapper.jar
绑定
为了生成绑定,项目使用 Mozilla uniffi,为 Kotlin、Swift、Python、Ruby 提供支持,同时也支持第三方对 Kotlin 多平台、Go、C++、C# 和 Dart 的支持。
已经计划对创建绑定的 crates 进行架构重构,这个初始版本仅用于实验,预期 API 将会有 破坏性更改。
这个 crate 中的大多数 Rust 类型都是对 lwk_wollet
和 lwk_signer
中类型的封装,以满足 uniffi 的要求,例如
- 类型上的方法只支持
&self
,因此如果内部类型需要可变性,通常将其封装在std::sync::Mutex
中。 - 返回值必须封装在
std::sync::Arc
中,以避免内存管理问题。
主机 & 要求
支持在 Mac 和 Linux 上构建。
注意以下命令需要定义在 ../context/env.sh
中的某些环境变量。如果你使用 direnv
并且允许了 .envrc
文件,它们会在进入目录时自动评估,否则请手动通过 . ./context/env.sh
运行。
对于Android构建,您需要在 ${PROJECT_DIR}/bin/android-ndk
中使用大于r23的NDK,如果您已经在其他地方有了,只需创建符号链接到您的路径。
构建绑定需要启动带有许多参数的命令,使用 just 工具。这是一个简单的类似于make的工具,您可以选择安装此工具或复制粘贴其中的shell命令。
Python
示例
- 列出wpkh/slip77钱包的交易
- 在regtest环境中发送wpkh/slip77钱包的交易
- 在regtest环境中发送wpkh/slip77钱包的资产
- 自定义持久化器,调用代码提供钱包更新的持久化方式
构建Python wheel
首先,创建一个虚拟环境,如果您已经创建了,则跳过此步骤。
cd lwk/lwk_bindings
virtualenv venv
source venv/bin/activate
pip install maturin maturin[patchelf] uniffi-bindgen==0.26.1
然后构建wheel
cd lwk/lwk_bindings
maturin develop
尝试它(请注意,当我们使用wheel导入包时,仍然存在一些问题)
import lwk
str(lwk.Network.mainnet())
发布Python wheel
从CI下载工件
- github ci for windows and mac
- gitlab ci for linux
$ twine upload *.whl
测试
cargo test -p lwk_bindings --features foreign_bindings --test bindings -- py
实时环境
just python-env-bindings
Kotlin
示例
构建
这将以调试模式构建绑定库并生成kotlin文件
just kotlin
创建android绑定库库,以发布模式生成4个架构
just android
Swift
示例
依赖关系
~55MB
~803K SLoC