À 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.
Exemple "Hello Rust"
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Voici un exemple de création d'un binaire Rust qui dépend d'une bibliothèque Rust.
Les modules Rust sont actuellement limités à des répertoires spécifiques définis dans build/soong/rust/config/allowed_list.go. Le module helloWorld
suivant utilise le répertoire external/rust
pour éviter de modifier cette liste.
À partir de la racine de code source AOSP
mkdir -p external/rust/hello_rust/src/
mkdir -p external/rust/libsimple_printer/src/
Créez external/rust/hello_rust/src/hello_rust.rs
avec le contenu suivant:
use simple_printer;
fn main() {
simple_printer::print_hello_rust();
}
Créez un fichier external/rust/libsimple_printer/src/lib.rs
avec le contenu suivant:
pub fn print_hello_rust() {
println!("Hello Rust!");
}
Créez un fichier external/rust/hello_rust/Android.bp
avec le contenu suivant:
rust_binary {
name: "hello_rust",
// srcs must contain a single source file, the entry point source.
srcs: ["src/hello_rust.rs"],
// rustlibs are Rust library dependencies. The type, rlib (static) or dylib
// (dynamic), are chosen automatically based on module type and target
// to avoid linkage issues.
rustlibs: ["libsimple_printer"],
// define any additional compilation flags
flags: [
"-C debug-assertions=yes",
],
// cc libraries can be linked in to rust binaries and libraries through the
// shared_libs and static_libs properties. These are not needed for this
// simple example, so they are not included.
}
Créez un fichier external/rust/libsimple_printer/Android.bp
avec le contenu suivant:
// rust_library provides dylib and rlib variants.
rust_library {
//name or stem properties must be of the form lib<crate_name><any_suffix>
name: "libsimple_printer",
//crate_name must match the name used in source (e.g. extern crate <name>)
crate_name: "simple_printer",
//srcs must contain a single source file, the entry point source
srcs: ["src/lib.rs"],
}
Enfin, créez votre module hello_rust
:
source build/envsetup.sh
lunch aosp_arm64-eng
m hello_rust
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,["# Hello Rust example\n\nThe following is an example of constructing a Rust binary that depends on\na Rust library.\n\nRust modules are currently confined to specific directories defined in\n[build/soong/rust/config/allowed_list.go](https://android.googlesource.com/platform/build/soong/+/41461f36604948ef72855d56093d8b3e45f1d19c/rust/config/allowed_list.go).\nThe following `helloWorld` module uses the `external/rust` directory to avoid\nmodifying this list.\n\nFrom the AOSP source root \n\n mkdir -p external/rust/hello_rust/src/\n mkdir -p external/rust/libsimple_printer/src/\n\nCreate `external/rust/hello_rust/src/hello_rust.rs` with the following contents: \n\n use simple_printer;\n fn main() {\n simple_printer::print_hello_rust();\n }\n\nCreate `external/rust/libsimple_printer/src/lib.rs` file with the following contents: \n\n pub fn print_hello_rust() {\n println!(\"Hello Rust!\");\n }\n\nCreate an `external/rust/hello_rust/Android.bp` file with the following contents: \n\n rust_binary {\n name: \"hello_rust\",\n\n // srcs must contain a single source file, the entry point source.\n srcs: [\"src/hello_rust.rs\"],\n\n // rustlibs are Rust library dependencies. The type, rlib (static) or dylib\n // (dynamic), are chosen automatically based on module type and target\n // to avoid linkage issues.\n rustlibs: [\"libsimple_printer\"],\n\n // define any additional compilation flags\n flags: [\n \"-C debug-assertions=yes\",\n ],\n\n // cc libraries can be linked in to rust binaries and libraries through the\n // shared_libs and static_libs properties. These are not needed for this\n // simple example, so they are not included.\n }\n\nCreate an `external/rust/libsimple_printer/Android.bp` file with the following contents: \n\n // rust_library provides dylib and rlib variants.\n rust_library {\n //name or stem properties must be of the form lib\u003ccrate_name\u003e\u003cany_suffix\u003e\n name: \"libsimple_printer\",\n\n //crate_name must match the name used in source (e.g. extern crate \u003cname\u003e)\n crate_name: \"simple_printer\",\n\n //srcs must contain a single source file, the entry point source\n srcs: [\"src/lib.rs\"],\n }\n\nFinally, build your `hello_rust` module: \n\n source build/envsetup.sh\n lunch aosp_arm64-eng\n m hello_rust"]]