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.
Binäre Module
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Rust-Binärdateien können mit dem Modultyp rust_binary
erstellt werden, z. B.:
rust_binary {
name: "hello_rust",
srcs: ["src/hello_rust.rs"],
}
Ebenso können Sie mit rust_binary_host
ein Modul bereitstellen, das nur für den Host gilt.
Wichtige Eigenschaften von „rust_binary“
Zusätzlich zu den wichtigen gemeinsamen Properties sind die folgenden Properties entweder wichtig oder haben ein spezifisches Verhalten, das für den rust_binary
-Modultyp gilt:
- static_executable: Diese Binärdatei wird als statische Binärdatei erstellt und impliziert, dass
prefer_rlib
true
ist. Vollständig statische ausführbare Dateien können nur für Bionic-Ziele erstellt werden. Bei nicht-bionischen Zielen bedeutet das nur, dass prefer_rlib
= true
ist, aber libc
und libdl
werden trotzdem dynamisch verknüpft.
- prefer_rlib: Ändert die
rustlibs
-Verknüpfung, sodass die rlib
-Verknüpfung standardmäßig für Geräteziele ausgewählt wird, und verknüpft libstd
als rlib
mit Gerätezielen. Das ist das Standardverhalten für Hostziele und hat keine Auswirkungen auf sie.
Verknüpfung
Standardmäßig werden rust_binary
-Module, die auf Geräte ausgerichtet sind, immer dynamisch mit libstd
verknüpft. Außerdem werden standardmäßig dylib
-Bibliotheken für Abhängigkeiten bevorzugt, die in rustlibs
aufgeführt sind, es sei denn, prefer_rlib
ist true
. Wenn vollständig statische Binärdateien erforderlich sind, lesen Sie die Informationen zur Property static_executable
.
Hostmodule sind immer statisch mit libstd
verknüpft und verwenden standardmäßig rlib
-Bibliotheken für Abhängigkeiten, die in rustlibs
aufgeführt sind.
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,["# 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`."]]