这是由谷歌 Android 团队开发的为期四天的 Rust 课程。该课程涵盖了 Rust 的全部内容,从基本语法到高级主题,如泛型和错误处理。它还包括最后一天的 Android 特定内容。
本课程的目标是教你 Rust。我们假设您对 Rust 一无所知,并希望:
- 让你全面了解 Rust 语法和语言。
- 使您能够修改现有程序并在 Rust 中编写新程序。
- 向您展示常见的 Rust 习语。
在第 4 天,我们将介绍特定于 Android 的内容,例如:
- 在 Rust 中构建 Android 组件。
- AIDL 服务器和客户端。
- 与 C、C++ 和 Java 的互操作性。
Android 上的原生平台开发支持 Rust。这意味着您可以在 Rust 中编写新的操作系统服务,以及扩展现有服务。
Android 构建系统 (Soong) 通过许多模块支持 Rust:
- rust_library:生成 Rust 库,并提供rlib和dylib变体。
- rust_ffi:生成可供cc模块使用的 Rust C 库,并提供静态和共享变体。
- rust_proc_macro:生成一个proc-macroRust 库。这些类似于编译器插件。
- rust_test:生成使用标准 Rust 测试工具的 Rust 测试二进制文件。
- rust_fuzz:利用 生成 Rust 模糊测试二进制文件libfuzzer。
- rust_protobuf:生成源代码并生成为特定 protobuf 提供接口的 Rust 库。
- rust_bindgen:生成源代码并生成包含 Rust 绑定到 C 库的 Rust 库。
从一个简单的应用程序开始。在 AOSP 结帐的根目录中,创建以下文件:
hello_rust/Android.bp:
rust_binary { |
hello_rust/src/main.rs:
//! Rust demo. |
现在你可以构建、推送和运行二进制文件:
$ m hello_rust |
你使用rust_library来创建一个新的Android的Rust库。
Rust 支持Android 接口定义语言 (AIDL):
- Rust 代码可以调用现有的 AIDL 服务器,
- 您可以在 Rust 中创建新的 AIDL 服务器。
使用log crate来自动记录到logcat(设备上)或stdout(主机上)。
Rust 对与其他语言的互操作性提供了出色的支持。这意味着您可以:
- 从其他语言调用 Rust 函数。
- 从 Rust 调用用其他语言编写的函数。
当您用外语调用函数时,我们说您使用的是 外来函数接口,也称为 FFI。
详细点击标题