9个稳定版本
1.1.2 | 2022年2月4日 |
---|---|
1.1.1 | 2022年2月3日 |
1.0.8 | 2022年2月3日 |
1.0.4 | 2022年2月2日 |
在FFI 中排名第 145
每月下载量 25
195KB
4K SLoC
Rust UniFFI 框架生成器/更新器
重要信息:仅使用 UniFFI_bindgen 版本 ~< 0.16.0 目前,使用 cargo install uniffi_bindgen 安装的版本为 0.17.0,这将生成不正确的库
请仅使用以下命令
bash cargo install uniffi_bindgen--版本0.16.0
注意:为Rust UniFFI设置您的项目。此代码仅在您有 *.UDL 文件时才有效
UDL 文件是Mozilla UniFFI模型,用于在 Swift、Kotlin 或 Python 中使用您的 Rust 库。
了解更多信息:[Runi Uniffi]
此工具使用 UniFFI 生成 Xcode 框架,该解决方案在 iOS、iOS 模拟器和 MacOS(Intel 和 M1 处理器/SoC)上运行顺畅。
此应用程序将根据您的 Rust UniFFI 模型和 Cargo.toml 文件生成 Xcode 框架
未来版本将支持创建应用程序。
准备使用
您必须安装 MacOS、iOS 和 iOS 模拟器的 rust 目标。 构建目标**
添加以下目标到 rust 编译器非常重要。无论您使用什么类型的 CPU,都必须添加 ARM64 库和 X86_64 库以生成适用于 Apple 商店的库。(MacOs)以下库的大小很小,不会影响您,并将为您节省许多未来的问题。此外,编译器脚本严格需要以下目标可用。
平台 | 详细信息 |
---|---|
x86_64-apple-darwin | Intel 平台上的 MacOS 支持 |
aarch64-apple-darwin | M1 (arm64) 平台上的 MacOS 支持 |
aarch64-apple-ios | arm64 平台上的 iOS 支持 |
aarch64-apple-ios-sim | M1 Mac(arm64)上的 iOS 模拟器 |
x86_64-apple-ios | Intel Mac(arm64)上的 iOS 模拟器 |
rustup target add x86_64-apple-darwin
rustup target add aarch64-apple-darwin
rustup target add x86_64-apple-ios
rustup target add aarch64-apple-ios
rustup target add aarch64-apple-ios-sim
安装
只需在终端中输入
cargo install xcode_uniffi
就这么多 😂
更新库 Cargo.toml
为了支持iOS/MacOS,需要进行静态编译。请确保您的rust库Cargo.toml文件中存在以下行。
[lib]
crate-type = ["staticlib", "cdylib"]
如何使用
我建议您在rust项目的根目录下运行此代码。
只需输入
xcode_uniffi create
默认情况下,它将在以下位置创建Xcode Framework,包括iOS、iOS模拟器和MacOS:
建议运行
cargo build
刚下载或复制的Rust项目需要更新'Cargo.lock'文件,否则您可能会在xcode文件中看到以下错误。
Xcode错误日志
Showing All Messages the lock file **Cargo.lock needs to be updated but --locked was passed to prevent this
< rust项目根目录 >/xcode/< Cargo库名称 >
您可以通过命令行参数来更改默认值。请将Xcode项目作为您rust项目的子目录,这样Xcode就可以为不同的架构进行编译。
RUST编译器目前尚不支持BITCODE,建议在框架和应用程序中禁用BITCODE。请参阅以下教程,了解如何禁用BITCODE:如何禁用BITCODE
命令行参数
子命令
- 创建
-
--package-name/-k
指定cargo包名称,仅当您的Cargo.toml文件中有多个包时使用。
-
--lib-name/-l
指定cargo库名称,如果您的Cargo.toml文件中有多个库。默认情况下,应用程序将尝试使用具有“staticlib”特征的crate_type包。
-
--name/-n
覆盖Xcode框架的名称。(自动格式化为Pascal格式)
默认情况下,Xcode框架的名称将与Rust库的Pascal字符串格式名称相同。
示例
Cargo包名称: my_fast_algo
Xcode框架名称: MyFastAlgo
-
--path/-p
生成Xcode框架的路径。默认情况下,Xcode框架将在您的rust目录中的
./xcode/< Cargo库名称 >
建议将Xcode框架作为rust项目的子文件夹创建。这样,您的xcode将在您更新rust项目时能够编译和生成代码...
-
--cargo/-r
Rust项目目录或Cargo.toml文件的路径。
建议在Rust项目目录中通过命令行运行此应用程序,但您也可以传递此参数来指定不同的路径。
Xcode项目将在此目录下创建,除非您指定了不同的路径
- 更新
仍在进行中
Xcode框架详情
Xcode iOS和MacOS框架项目目标具有相同的产品名称。原因是使使用此框架的Xcode跨平台(iOS/macOS)项目更简单,无需导入不同的Swift框架。框架的名称将是Cargo库名称的Pascal格式,除非您使用命令行参数更改它。
作者: Jacob Hatami
依赖项
~5–16MB
~171K SLoC