谷歌透露更多有关将 Rust 集成到 Android 的信息

移动开发 Android
自 2019 年以来,Android 团队一直致力于将 Rust 编程语言引入 AOSP(Android Open Source Project),以作为平台原生代码开发的内存安全替代品。近日,谷歌则在一篇博客文章中进一步阐述了关于将 Rust 整合到 AOSP 的更多信息。

自 2019 年以来,Android 团队一直致力于将 Rust 编程语言引入 AOSP(Android Open Source Project),以作为平台原生代码开发的内存安全替代品。近日,谷歌则在一篇博客文章中进一步阐述了关于将 Rust 整合到 AOSP 的更多信息。

[[399571]]

博客内容指出,与任何大型项目一样,引入一种新的语言需要仔细考虑。对于 Android 来说,一个重要的方面就是评估如何将 Rust 最好地融入 Android 的构建系统。根据 Android 团队的说法,将 Rust 集成到大型项目中存在许多挑战;例如放弃 Cargo 而直接使用 Rust 编译器 rustc 的可能会存在使组织脱离更广泛的 Rust 社区的风险。

该团队还表示,当为 Android 开发的 crates 可以使 Rust 社区受益时,他们希望将其作为独立的 crates 发布。并认为,Rust 在 Android 中的成功取决于最大限度地减少 Android 和整个 Rust 社区之间的分歧,并希望 Rust 社区能从 Android 的参与中受益。

Rust 提供 Cargo 作为默认的构建系统和包管理器,收集依赖关系并调用 rustc(Rust 编译器)来构建目标 crate(Rust 包)。而在 Android 中,Soong 则替代了这个角色,并直接调用 rustc。原因在于:

  • Cargo 中的 C 语言依赖是独立处理的,而 Soong 已经提供了相关的机制;
  • 通过 Soong 直接调用编译器可以提供更多 Android 所需的稳定性和控制力,以支持各种构建配置;
  • 独立的构建对于 Android 创建可重复的构建非常重要;
  • 增量构建对于保持工程生产力非常重要。

Android 团队的 Ivan Lozano 称,“直接使用 Rust 编译器使我们能够避免这些问题,并且与我们在 AOSP 中编译所有其他代码的方式一致。它提供了对构建过程的最大控制权,并简化了与 Android 现有构建系统的整合。但是,由于 Cargo 的使用在 Rust crate 的生态系统中根深蒂固,避免使用 Cargo 则会带来一些挑战,并影响到许多其他构建系统的决定。”

此外,关于为什么支持 proc_macros,而不支持 build.rs 脚本。该团队则解释称,这是因为 build.rs 代码是作为一次性代码编写的,而 proc_macros 定义了编译器中可重用功能,这对于 Rust 社区可能更有用。且 proc_macros 通常能得到更好的维护和更多的上游审查,在代码审查过程中更容易处理、更容易进入沙盒。

Android 团队还透露,他们计划在不久的将来在 source.android.com 中添加关于如何在 Soong 中定义和使用 Rust 模块的文档。其希望 Android 对 Rust 的支持能与 Rust 生态系统一起继续发展,并希望继续参与有关如何将 Rust 集成到现有构建系统的讨论。

本文转自OSCHINA

本文标题:谷歌透露更多有关将 Rust 集成到 Android 的信息

本文地址:https://www.oschina.net/news/141612/integrating-rust-into-android-open

责任编辑:未丽燕 来源: 开源中国
相关推荐

2013-11-20 11:24:05

AndroidAPI

2014-04-02 10:37:07

Build 大会Windows 9

2015-02-05 09:50:10

Windows 10

2023-03-08 14:14:51

微软ChatGPT

2023-12-03 22:15:29

Python人工智能

2010-02-05 17:55:01

谷歌Android操作

2023-03-07 11:42:38

ChatGPT开发工具

2011-04-09 15:56:24

佩奇谷歌Android

2013-12-17 10:36:36

2010-02-07 11:13:04

Android设备间

2014-06-23 09:49:32

Go语言Android谷歌

2019-05-10 08:43:45

谷歌AndroidFuchsia

2021-09-24 09:40:22

谷歌云AzureAWS

2011-11-19 20:17:34

2013-09-03 09:41:24

微软谷歌美国政府

2009-04-02 08:47:04

GoogleAndroid移动OS

2013-11-27 11:08:28

开源微软

2009-03-28 09:42:02

Windows 7微软操作系统

2011-10-21 09:24:13

谷歌Android 4.0源代码

2011-02-18 14:35:46

摩托罗拉MWCAndroid 3.0
点赞
收藏

51CTO技术栈公众号