Od 27 marca 2025 r. zalecamy używanie android-latest-release
zamiast aosp-main
do kompilowania i wspołtworzenia AOSP. Więcej informacji znajdziesz w artykule o zmianach w AOSP.
Wprowadzenie do Rust na Androida
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Platforma Android obsługuje tworzenie komponentów natywnych systemu operacyjnego w języku Rust, który jest nowoczesnym językiem programowania systemowego zapewniającym bezpieczeństwo pamięci przy wydajności porównywalnej z językami C/C++. Rust używa kombinacji kontroli wykonywanych w czasie kompilacji, które egzekwują czas życia i własność obiektu, oraz kontroli wykonywanych w czasie działania, które zapewniają prawidłowe dostępy do pamięci, co eliminuje potrzebę korzystania z zbieracza elementów niepożądanych.
Rust oferuje wiele nowoczesnych funkcji językowych, które pozwalają programistom zwiększyć produktywność i pewność siebie w przypadku kodu:
- Bezpieczne programowanie równoległe – łatwość, z jaką użytkownicy mogą pisać wydajny kod bezpieczny w zakresie wątków, zaowocowała sloganem Bezpieczne równoległość.
- System typów o wyraźnych właściwościach – Rust zapobiega błędom logicznego programowania, zezwalając na bardzo wyraziste typy (np. oprawy Newtype i warianty enum z zawartością).
- Bardziej skuteczne sprawdzanie w czasie kompilacji – więcej błędów wykrytych w czasie kompilacji zwiększa pewność programistów, że gdy kod zostanie skompilowany, będzie działał zgodnie z oczekiwaniami.
- Wbudowany framework testowy – Rust zawiera wbudowany framework testowy, w którym testy jednostkowe można umieszczać obok implementacji, co ułatwia uwzględnianie testów jednostkowych.
- Egzekwowanie obsługi błędów – funkcje z możliwością odzyskiwania błędów mogą zwracać typ wyniku, który będzie albo wariantem powodzenia, albo wariantem błędu. Kompilator wymaga, aby wywołujący sprawdzali i obsługiwali wariant błędu typu
Result
zwracanego przez wywołanie funkcji. Pozwala to zmniejszyć ryzyko wystąpienia błędów wynikających z nieobsługiwanych błędów.
- Inicjowanie – Rust wymaga, aby każda zmienna przed użyciem była inicjowana do legalnego elementu typu, co zapobiega niezamierzonemu inicjowaniu do wartości niebezpiecznej.
- Bezpieczniejsze przetwarzanie liczb całkowitych – wszystkie konwersje typu liczba całkowita są jawnymi konwersjami.
Deweloperzy nie mogą przypadkowo rzutować podczas wywołania funkcji, przy przypisywaniu zmiennej ani podczas próby wykonania operacji arytmetycznej z innymi typami. Sprawdzanie przepełnienia jest domyślnie włączone w Rust na Androidzie, co wymaga, aby operacje przepełnienia były jawne.
Więcej informacji znajdziesz w tej serii postów na blogu dotyczących obsługi Rust na Androida:
Treść strony i umieszczone na niej fragmenty kodu podlegają licencjom opisanym w Licencji na treści. Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi należącymi do firmy Oracle lub jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-07-27 UTC.
[[["Łatwo zrozumieć","easyToUnderstand","thumb-up"],["Rozwiązało to mój problem","solvedMyProblem","thumb-up"],["Inne","otherUp","thumb-up"]],[["Brak potrzebnych mi informacji","missingTheInformationINeed","thumb-down"],["Zbyt skomplikowane / zbyt wiele czynności do wykonania","tooComplicatedTooManySteps","thumb-down"],["Nieaktualne treści","outOfDate","thumb-down"],["Problem z tłumaczeniem","translationIssue","thumb-down"],["Problem z przykładami/kodem","samplesCodeIssue","thumb-down"],["Inne","otherDown","thumb-down"]],["Ostatnia aktualizacja: 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."]]