[Rust翻译]移动开发的Rust

478 阅读3分钟

本文由 简悦SimpRead 转码,原文地址 blog.wildcat.io

自从这个博客创建以来,我一直专注于移动和网络开发,近十年来......。

自从这个博客创建以来,我一直专注于移动和网络开发,已有近十年的时间。与此同时,Rust的普及率也在迅速增长。

关于用Rust进行移动开发的社区资源并不多,尽管Mozilla已经为Firefox Android/iOS使用Rust很长时间了。在调查了他们的Rust项目之后,现在是写一篇关于它的博客的好时机。

Rust为移动开发做好准备了吗?

简短的回答是 "是的"。

大多数知名的Rust的展示都是关于后台开发的。然而,你也可以找到很多关于它在客户端开发中的应用案例。

如果你想了解更多,这里有很好的参考资料。

拼图的关键部分

你可以写一个简单的带有C语言绑定的Rust库,在Swift/Objective-C或Java/Kotlin(JNI)中使用。然而,这并不是一个简单的方法。C绑定意味着大量的模板代码,而且很难维护。

幸运的是,Mozilla建立了两个关键的框架,对我们帮助很大。

使用Rust进行移动开发的例子

我使用Rust为一个移动应用建立了一个简单的代码库:github.com/imWildCat/u… 。我相信这些代码可以解释自己。但是提到一些技巧应该是不错的。

iOS

对于iOS,你需要为每个目标构建二进制,包括模拟器和设备(分别为英特尔和苹果CPU)。

通常情况下,你需要为这个矩阵构建。

目标CPU
模拟器x86_64
模拟器aarch64
设备x86_64
设备aarch64

对于Rust的aarch64模拟器工具链,它不被稳定通道所支持。所以,你需要安装带有源代码的夜间工具链。类似的事情也适用于大多数Mac Catalyst目标。

rustup toolchain install nightly
rustup target add aarch64-apple-ios-sim --toolchain nightly
rustup target add aarch64-apple-ios x86_64-apple-ios
rustup component add rust-src --toolchain nightly

(链接到源代码)

关于Rust的平台支持的更多信息可以在doc.rust-lang.org/nightly/rus…找到。

Android

我们唯一需要小心的是Python 2在macOS 12.3上的移除。如果你想在macOS 12.3及更高版本上使用NDK构建Android库,你最好从源代码构建Python 2.x,并将其链接到/usr/local/bin/python。否则,构建很可能会失败。看到Python 2在2022年仍然是NDK工具链的一个依赖项,真是令人难过。

摘要

尽管Rust在移动领域的发展还处于早期阶段,但这种语言有很大的潜力。对我来说,最吸引人的特点是Rust的零成本抽象性。这意味着生成的二进制文件可以足够小,其性能也很好。由于许多像Mozilla这样的优秀团队已经在移动应用中使用它好几年了,现在是开始使用它的好时机。


www.deepl.com 翻译