Rust ライブラリ
Android 向けの新しい Rust ライブラリを作成するには、rust_library を使用します。
ここでは、2 つのライブラリへの依存関係を宣言します。
libgreeting。これは以下で定義します。libtextwrap。これは、すでにexternal/rust/android-crates-io/crates/に vendored 済みの crate です。
hello_rust/Android.bp:
rust_binary {
name: "hello_rust_with_dep",
crate_name: "hello_rust_with_dep",
srcs: ["src/main.rs"],
rustlibs: [
"libgreetings",
"libtextwrap",
],
prefer_rlib: true, // Need this to avoid dynamic link error.
}
rust_library {
name: "libgreetings",
crate_name: "greetings",
srcs: ["src/lib.rs"],
}
hello_rust/src/main.rs:
// Copyright 2022 Google LLC
// SPDX-License-Identifier: Apache-2.0
//! Rust demo.
use greetings::greeting;
use textwrap::fill;
/// Prints a greeting to standard output.
fn main() {
println!("{}", fill(&greeting("Bob"), 24));
}
hello_rust/src/lib.rs:
// Copyright 2022 Google LLC
// SPDX-License-Identifier: Apache-2.0
//! Greeting library.
/// Greet `name`.
pub fn greeting(name: &str) -> String {
format!("Hello {name}, it is very nice to meet you!")
}
先ほどと同じように、バイナリをビルド、プッシュして実行します。
m hello_rust_with_dep
adb push "$ANDROID_PRODUCT_OUT/system/bin/hello_rust_with_dep" /data/local/tmp
adb shell /data/local/tmp/hello_rust_with_dep
Hello Bob, it is very
nice to meet you!
-
ビルド手順を一通り実行し、それらがエミュレータ上で動作することを示してください。
-
greetingsという名前の Rust crate は、libgreetingsというルールでビルドする必要があります。 Rust コードが通常の Rust と同様に crate 名を使っていることに注意してください。 -
繰り返しになりますが、ビルドルールによって、すべての public な項目にドキュメントコメントを追加することが強制されます。