谷歌宣布 Android 加入对 Rust 的支持!

刘望舒

共 2704字,需浏览 6分钟

 · 2021-05-02

 微信改了推送机制,真爱请星标本公号
公众号回复BAT加入BATcoder技术群
出品 | OSCHINA
文 | 局长
谷歌发布博客称 AOSP (Android Open Source Project) 现已支持使用 Rust 开发 Android 操作系统。
谷歌表示,Android 大约 70% 的高危安全漏洞由内存安全问题造成。顺便一提,微软和 Chrome 宣布采用 Rust 解决内存问题时也提到了「70% 的安全漏洞是内存安全问题」这个说法(分别查看微软Chrome 的公告)。这是什么定律?
对于这些内存安全问题,谷歌表示除了优化内存错误检测机制外,最有效的解决办法是采用内存安全语言。虽然 Kotlin 和 Java 也属于内存安全语言,同样是为易用性、可移植性和安全性而设计,它们是开发 Android 应用的最佳选择,但对于操作系统的底层而言,不能选择 Kotlin 和 Java。
操作系统底层开发需要使用系统级编程语言,例如 C、C++ 和 Rust,这类语言支持访问底层系统资源和硬件。对于 C 和 C++ 来说,开发者负责管理内存生命周期,但管理内存时因多线程代码库的复杂性很容易导致他们犯错。
Rust 则可以利用编译时检查(确保对象的生命周期和所有权)和运行时检查(确保内存访问有效)来保证内存安全,并且 Rust 在实现这种安全性的同时,还提供了与 C 和 C++ 相当的性能。
谷歌表示,引入新的编程语言并不能解决现有 C/C++ 代码中的错误。即便重新调动 Android 团队中每个软件工程师参与开发,重写几千万行代码并不可行。因此,Rust 主要用于新的开发而不是重写成熟的 C/C++ 代码。
更具体的原因是,谷歌对内存安全错误存在的时长进行了分析,发现大多数内存安全错误都发生在新的或最近修改的代码中,其中大约 50% 只出现了不到一年,这些错误后面会逐渐修复,也就意味着旧代码并不是迫切需要改进的地方。
无论如何,向 Android 平台添加新的开发语言支持是一项大工程。比如需要维护工具链和依赖关系、更新测试基础设施和工具、以及对开发者进行培训等。谷歌表示,在过去的 18 个月里,他们一直在为 AOSP 添加 Rust 支持,并计划在接下来的几个月内共享部分早期使用 Rust 开发的项目。此外,谷歌还计划将 Rust 扩展到更多系统,这将是一个长期计划。

·················END·················

推荐阅读

耗时2年,Android进阶三部曲第三部《Android进阶指北》出版!

再见SharedPreferences,你好MMKV!(附中奖名单)

相册适配 Android 11 绕的那些弯路!

BATcoder技术群,让一部分人先进大厂

你好,我是刘望舒,腾讯云最具价值专家TVP,著有畅销书《Android进阶之光》《Android进阶解密》《Android进阶指北》,蝉联四届电子工业出版社年度优秀作者,谷歌开发者社区特邀讲师。

前华为面试官,现大厂技术负责人。


想要加入 BATcoder技术群,公号回复BAT即可。

为了防止失联,欢迎关注我的小号


           
  微信改了推送机制,真爱请星标本公号👇
浏览 8
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报