À partir du 27 mars 2025, nous vous recommandons d'utiliser android-latest-release
au lieu de aosp-main
pour créer et contribuer à AOSP. Pour en savoir plus, consultez la section Modifications apportées à AOSP.
Présentation d'Android Rust
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
La plate-forme Android prend en charge le développement de composants d'OS natifs en Rust, un langage de programmation système moderne qui garantit la sécurité de la mémoire avec des performances équivalentes à celles de C/C++. Rust utilise une combinaison de vérifications au moment de la compilation qui appliquent la durée de vie et la propriété des objets, et de vérifications au moment de l'exécution qui garantissent des accès à la mémoire valides, ce qui élimine le besoin d'un collecteur de déchets.
Rust propose un éventail de fonctionnalités de langage modernes qui permettent aux développeurs d'être plus productifs et confiants dans leur code:
- Programmation concurrente sécurisée : la facilité avec laquelle les utilisateurs peuvent écrire du code efficace et thread-safe a donné naissance au slogan Fearless Concurrency (Concurrency sans peur) de Rust.
- Système de typage expressif : Rust permet d'éviter les bugs de programmation logique en autorisant des types très expressifs (tels que les wrappers Newtype et les variantes d'énumération avec du contenu).
- Tests plus stricts au moment de la compilation : plus de bugs détectés au moment de la compilation, ce qui augmente la confiance des développeurs dans le fait que le code fonctionne comme prévu lorsqu'il est compilé.
- Framework de test intégré : Rust fournit un framework de test intégré dans lequel les tests unitaires peuvent être placés à côté de l'implémentation qu'ils testent, ce qui facilite leur inclusion.
- Application du traitement des erreurs : les fonctions avec des échecs récupérables peuvent renvoyer un type de résultat, qui sera une variante de réussite ou d'erreur. Le compilateur exige que les appelants vérifient et gèrent la variante d'erreur d'une énumération
Result
renvoyée à partir d'un appel de fonction. Cela réduit le risque de bugs résultant de défaillances non gérées.
- Initialisation : Rust exige que chaque variable soit initialisée avec un membre valide de son type avant utilisation, ce qui empêche une initialisation involontaire avec une valeur non sécurisée.
- Gestion des entiers plus sécurisée : toutes les conversions de type entier sont des conversions explicites.
Les développeurs ne peuvent pas effectuer de cast accidentel lors d'un appel de fonction lors de l'attribution à une variable ou lors d'une tentative d'opération arithmétique avec d'autres types. La vérification des débordements est activée par défaut dans Android pour Rust, ce qui nécessite que les opérations de débordement soient explicites.
Pour en savoir plus, consultez la série d'articles de blog sur la prise en charge d'Android Rust:
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/27 (UTC).
[null,null,["Dernière mise à jour le 2025/07/27 (UTC)."],[],[],null,["# Android Rust introduction\n\nThe Android platform provides support for developing native OS components in Rust,\na modern systems-programming language that provides memory safety guarantees with\nperformance equivalent to C/C++. Rust uses a combination of compile-time checks\nthat enforce object lifetime and ownership, and runtime checks that ensure valid\nmemory accesses, thereby eliminating the need for a garbage collector.\n\nRust provides a range of modern language features which allow developers to be\nmore productive and confident in their code:\n\n- **Safe concurrent programming** - The ease with which this allows users to write efficient, thread-safe code has given rise to Rust's [Fearless Concurrency](https://doc.rust-lang.org/book/ch16-00-concurrency.html) slogan.\n- **Expressive type system** - Rust helps prevent logical programming bugs by allowing for highly expressive types (such as Newtype wrappers, and enum variants with contents).\n- **Stronger Compile-time Checks** - More bugs caught at compile-time increases developer confidence that when code compiles successfully, it works as intended.\n- **Built-in Testing Framework** - Rust provides a built-in testing framework where unit tests can be placed alongside the implementation they test, making unit testing easier to include.\n- **Error handling enforcement** - Functions with recoverable failures can return a [Result type](https://doc.rust-lang.org/book/ch09-02-recoverable-errors-with-result.html), which will be either a success variant or an error variant. The compiler requires callers to check for and handle the error variant of a `Result` enum returned from a function call. This reduces the potential for bugs resulting from unhandled failures.\n- **Initialization** - Rust requires every variable to be initialized to a legal member of its type before use, preventing an unintentional initialization to an unsafe value.\n- **Safer integer handling** - All integer-type conversions are explicit casts. Developers can't accidentally cast during a function call when assigning to a variable, or when attempting to do arithmetic with other types. Overflow checking is on by default in Android for Rust, which requires overflow operations to be explicit.\n\nFor more information, see the series of blog posts on Android Rust support:\n\n- [Rust in the Android Platform](https://security.googleblog.com/2021/04/rust-in-android-platform.html) \n Provides an overview on why the Android team introduced Rust as a new platform language.\n- [Integrating Rust into the Android Open Source Project](https://security.googleblog.com/2021/05/integrating-rust-into-android-open.html) \n Discusses how Rust support has been introduced to the build system, and why certain design decisions were made.\n- [Rust/C++ interop in the Android Platform](https://security.googleblog.com/2021/06/rustc-interop-in-android-platform.html) \n Discusses the approach to Rust/C++ interoperability within Android."]]