À 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.
Modules binaires
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Les binaires Rust peuvent être générés à l'aide du type de module rust_binary
, par exemple:
rust_binary {
name: "hello_rust",
srcs: ["src/hello_rust.rs"],
}
De même, vous pouvez utiliser rust_binary_host
pour fournir un module réservé à l'hôte.
Propriétés rust_binary notables
En plus des propriétés communes importantes, les propriétés suivantes sont également importantes ou présentent un comportement unique propre au type de module rust_binary
:
- static_executable: compile ce binaire en tant que binaire statique et implique que
prefer_rlib
est true
. Les exécutables entièrement statiques ne peuvent être produits que pour les cibles bionic. Pour les cibles non bioniques, cela n'implique que prefer_rlib
est true
, mais il associe toujours libc
et libdl
de manière dynamique.
- prefer_rlib: modifie l'association
rustlibs
pour sélectionner l'association rlib
par défaut pour les cibles d'appareils, et associe libstd
en tant que rlib
sur les cibles d'appareils. Notez qu'il s'agit du comportement par défaut pour les cibles d'hôtes et qu'il n'a aucune incidence sur elles.
Association
Par défaut, les modules rust_binary
qui ciblent des appareils sont toujours associés de manière dynamique à libstd
et préfèrent par défaut les bibliothèques dylib
pour les dépendances listées dans rustlibs
, sauf si prefer_rlib
est true
. Si des binaires entièrement statiques sont requis, consultez la propriété static_executable
.
Les modules hôtes sont toujours associés de manière statique à libstd
et, par défaut, préfèrent les bibliothèques rlib
pour les dépendances listées dans rustlibs
.
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).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/07/27 (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`."]]