A partir de 27 de março de 2025, recomendamos usar android-latest-release
em vez de aosp-main
para criar e contribuir com o AOSP. Para mais informações, consulte Mudanças no AOSP.
Introdução à linguagem de programação Rust no Android
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
A Plataforma Android oferece suporte ao desenvolvimento de componentes nativos do SO em Rust,
uma linguagem de programação de sistemas moderna com garantias de segurança de memória e
desempenho equivalente ao C/C++. O Rust usa uma combinação de verificações durante a compilação,
que aplicam o ciclo de vida e a propriedade do objeto, e verificações durante a execução que garantem
acessos válidos à memória, eliminando a necessidade de um coletor de lixo.
O Rust oferece uma série de recursos de linguagem modernos que permitem aos desenvolvedores serem
mais produtivos e confiantes em relação ao próprio código:
- Programação simultânea segura: a facilidade com que os usuários podem
escrever um código eficiente e seguro para linhas de execução deu origem ao slogan
do Rust de
Simultaneidade sem medo (link em inglês).
- Sistema de tipo expressivo: o Rust ajuda a evitar bugs de programação lógica,
permitindo tipos altamente expressivos, como wrappers Newtype e variantes
de tipo enumerado com conteúdo.
- Verificações durante a compilação mais eficientes: quanto mais bugs detectados durante a compilação, maior
a confiança do desenvolvedor de que, quando o código for compilado corretamente, ele funcionará conforme
o esperado.
- Framework de testes integrado: o Rust oferece um framework de teste integrado
em que testes de unidade podem ser realizados com a implementação que será testada, facilitando
a inclusão de testes de unidade.
- Aplicação do tratamento de erros: as funções com falhas recuperáveis podem
retornar um tipo de resultado (link em inglês),
que será uma variante bem-sucedida ou uma variante de erro. O compilador
exige que os autores de chamadas verifiquem e processem a variante de erro de um tipo enumerado
Result
retornado por uma chamada de função. Isso reduz o potencial de bugs resultantes
de falhas não processadas.
- Inicialização: o Rust exige que todas as variáveis sejam inicializadas em um membro
legal do tipo dela antes de serem usadas, evitando uma inicialização não intencional
com um valor não seguro.
- Processamento de números inteiros mais seguro: todas as conversões de tipo inteiro são casts explícitos.
Os desenvolvedores não podem fazer casts acidentalmente durante uma chamada de função ao
atribuir a uma variável ou ao tentar fazer aritmética com outros tipos. A verificação
de overflow é ativada por padrão para o Rust no Android, o que exige que as operações
de overflow sejam explícitas.
Para saber mais, consulte a série de postagens do blog sobre o suporte ao Rust no Android:
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-04-04 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-04-04 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."]]