Ab dem 27. März 2025 empfehlen wir, android-latest-release
anstelle von aosp-main
zu verwenden, um AOSP zu erstellen und Beiträge dazu zu leisten. Weitere Informationen finden Sie unter Änderungen am AOSP.
Einführung in Android Rust
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Die Android-Plattform unterstützt die Entwicklung nativer Betriebssystemkomponenten in Rust, einer modernen Systemprogrammiersprache, die Speichersicherheit mit einer Leistung bietet, die der von C/C++ entspricht. Rust verwendet eine Kombination aus Kompilierzeitprüfungen, die die Lebensdauer und das Eigentum von Objekten erzwingen, und Laufzeitprüfungen, die gültige Speicherzugriffe gewährleisten. Dadurch ist kein Garbage Collector erforderlich.
Rust bietet eine Reihe moderner Sprachfeatures, mit denen Entwickler produktiver arbeiten und mehr Vertrauen in ihren Code haben können:
- Sichere parallele Programmierung: Die Leichtigkeit, mit der Nutzer effizienten, threadsicheren Code schreiben können, hat zu dem Slogan Fearless Concurrency („Furchtlose Parallelität“) von Rust geführt.
- Ausdrucksstarkes Typsystem: Rust hilft, logische Programmierfehler zu vermeiden, indem es sehr ausdrucksstarke Typen zulässt (z. B. Newtype-Wrapper und Enum-Varianten mit Inhalt).
- Strengere Prüfungen zur Kompilierungszeit: Je mehr Fehler bei der Kompilierung erkannt werden, desto sicherer können sich Entwickler sein, dass der Code funktioniert, wenn er erfolgreich kompiliert wird.
- Integriertes Test-Framework: Rust bietet ein integriertes Test-Framework, in dem Unit-Tests neben der zu testenden Implementierung platziert werden können, was die Einbindung von Unit-Tests erleichtert.
- Erzwungene Fehlerbehandlung: Funktionen mit wiederherstellbaren Fehlern können einen Ergebnistyp zurückgeben, der entweder eine Erfolgsvariante oder eine Fehlervariante ist. Der Compiler erfordert, dass Aufrufer die Fehlervariante eines
Result
-Enumerations prüfen und behandeln, das von einem Funktionsaufruf zurückgegeben wird. So wird das Risiko von Fehlern, die durch nicht verarbeitete Fehler entstehen, reduziert.
- Initialisierung: In Rust muss jede Variable vor der Verwendung mit einem zulässigen Mitglied ihres Typs initialisiert werden, um eine unbeabsichtigte Initialisierung mit einem unsicheren Wert zu verhindern.
- Sicherere Ganzzahlverarbeitung: Alle Ganzzahlkonvertierungen sind explizite Umwandlungen.
Entwickler können bei der Zuweisung zu einer Variablen oder beim Versuch, mit anderen Typen arithmetische Operationen auszuführen, nicht versehentlich während eines Funktionsaufrufs einen Casting-Vorgang ausführen. Die Overflow-Prüfung ist in Android für Rust standardmäßig aktiviert. Overflow-Vorgänge müssen also explizit sein.
Weitere Informationen finden Sie in der Reihe von Blogposts zum Android-Rust-Support:
Alle Inhalte und Codebeispiele auf dieser Seite unterliegen den Lizenzen wie im Abschnitt Inhaltslizenz beschrieben. Java und OpenJDK sind Marken oder eingetragene Marken von Oracle und/oder seinen Tochtergesellschaften.
Zuletzt aktualisiert: 2025-07-27 (UTC).
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Benötigte Informationen nicht gefunden","missingTheInformationINeed","thumb-down"],["Zu umständlich/zu viele Schritte","tooComplicatedTooManySteps","thumb-down"],["Nicht mehr aktuell","outOfDate","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Problem mit Beispielen/Code","samplesCodeIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 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."]]