谷歌安卓团队的四天Rust课程


这是由谷歌 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 {
    name: "hello_rust",
    crate_name:
"hello_rust",
    srcs: [
"src/main.rs"],
}

hello_rust/src/main.rs:

//! Rust demo.

/// Prints a greeting to standard output.
fn main() {
    println!(
"Hello from Rust!");
}

现在你可以构建、推送和运行二进制文件:

$ m hello_rust
$ adb push $ANDROID_PRODUCT_OUT/system/bin/hello_rust /data/local/tmp
$ adb shell /data/local/tmp/hello_rust
Hello from Rust!

你使用rust_library来创建一个新的Android的Rust库。

Rust 支持Android 接口定义语言 (AIDL)

  • Rust 代码可以调用现有的 AIDL 服务器,
  • 您可以在 Rust 中创建新的 AIDL 服务器。

使用log crate来自动记录到logcat(设备上)或stdout(主机上)。

Rust 对与其他语言的互操作性提供了出色的支持。这意味着您可以:

  • 从其他语言调用 Rust 函数。
  • 从 Rust 调用用其他语言编写的函数。

当您用外语调用函数时,我们说您使用的是 外来函数接口,也称为 FFI。

详细点击标题