当前位置: 首页 > 科技观察

谷歌揭示了更多关于将Rust集成到Android

时间:2023-03-19 21:06:12 科技观察

中的信息自2019年以来,Android团队一直致力于将Rust编程语言引入AOSP(Android开源项目),作为平台原生代码开发的内存安全替代方案。最近,谷歌在一篇博文中进一步阐述了将Rust集成到AOSP中。博客内容指出,与任何大型项目一样,引入一门新语言需要慎重考虑。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团队的IvanLozano表示,“直接使用Rust编译器可以让我们避免这些问题,并且与我们在AOSP中编译所有其他代码的方式一致。它提供了对构建过程的最大控制并简化了与Android的集成。集成现有的构建系统。然而,由于Cargo的使用在Rustcrate生态系统中根深蒂固,避免使用Cargo会带来一些挑战并影响许多其他构建系统决策。》另外,至于为什么支持proc_macros,但不支持build.rs脚本。团队解释说,这是因为build.rs代码是作为一次性代码编写的,而proc_macros在编译器中定义了可重用的功能,这对Rust社区可能更有用。而且proc_macros通常得到更好的维护和更多的上游审查,在代码审查期间更容易处理和更容易沙箱。Android团队还透露他们计划在不久的将来开源。将文档添加到.android.com关于如何在Soong中定义和使用Rust模块,希望Android对Rust的支持会随着Rust生态系统的发展而持续增长,并希望继续参与如何将Rust集成到现有构建系统中的讨论。本文转自OSCHINA文章标题:Google透露更多关于将Rust集成到Android中的信息本文地址:https://www.oschina.net/news/141612/integrating-rust-into-android-打开