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.
Módulos binários
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Os binários Rust podem ser produzidos usando o tipo de módulo rust_binary
, por exemplo:
rust_binary {
name: "hello_rust",
srcs: ["src/hello_rust.rs"],
}
Da mesma forma, use rust_binary_host
para fornecer um módulo
somente host.
Propriedades rust_binary importantes
Além das propriedades comuns importantes,
as propriedades a seguir também são importantes ou exibem comportamentos exclusivos
específicos para o tipo de módulo rust_binary
:
- static_execable: cria esse binário como um binário estático e implica que a propriedade
prefer_rlib
é true
. Os executáveis totalmente estáticos só podem ser produzidos para
destinos biônicos. Para destinos não biônicos, isso implica apenas que prefer_rlib
é true
, mas libc
e libdl
ainda são vinculadas dinamicamente.
- prefer_rlib: muda a vinculação
rustlibs
para selecionar a vinculação rlib
por padrão por dispositivos de destino. Vincula libstd
como rlib
nos dispositivos
de destino. Esse é o comportamento padrão para destinos de host e
não tem impacto neles.
Vinculação
Por padrão, os módulos rust_binary
que são direcionados a dispositivos são sempre vinculados
dinamicamente à libstd
e, por padrão, preferirão usar bibliotecas dylib
para
dependências listadas em rustlibs
, a menos que a propriedade prefer_rlib
seja true
. Se os binários
totalmente estáticos forem necessários, consulte a propriedade static_executable
.
Os módulos do host são sempre vinculados estaticamente à libstd
e,
por padrão, preferem bibliotecas rlib
para dependências listadas em
rustlibs
.
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,["# Binary modules\n\nRust binaries can be produced using the `rust_binary` module type; for example: \n\n rust_binary {\n name: \"hello_rust\",\n srcs: [\"src/hello_rust.rs\"],\n }\n\nSimilarly, you can use `rust_binary_host` to provide a host-only\nmodule.\n\nNotable rust_binary properties\n------------------------------\n\nIn addition to the [Important common properties](/docs/setup/build/rust/building-rust-modules/android-rust-modules#important-common-properties),\nthe following properties are also either important, or exhibit unique behavior\nspecific to the `rust_binary` module type:\n\n- **static_executable** : Builds this binary as a static binary, and implies `prefer_rlib` is `true`. Fully static executables can only be produced for bionic targets. For non-bionic targets, this implies only that `prefer_rlib` is `true`, but it still links `libc` and `libdl` dynamically.\n- **prefer_rlib** : Changes the `rustlibs` linkage to select the `rlib` linkage by default for device targets, and links `libstd` as an `rlib` on device targets. Note that this is the default behavior for host targets, and has no impact on them.\n\nLinkage\n-------\n\nBy default, `rust_binary` modules that are targeting devices are always linked\ndynamically against `libstd` and by default will prefer `dylib` libraries for\ndependencies listed in `rustlibs` unless `prefer_rlib` is `true`. If fully\nstatic binaries are required, see the `static_executable` property.\n\nHost modules are always linked statically against `libstd` and\nby default prefer `rlib` libraries for dependencies that are listed in\n`rustlibs`."]]