Реалізація сервісу
Тепер ми можемо реалізувати сервіс AIDL:
birthday_service/src/lib.rs:
use com_example_birthdayservice::aidl::com::example::birthdayservice::IBirthdayService::IBirthdayService;
use com_example_birthdayservice::binder;
/// Реалізація `IBirthdayService`.
pub struct BirthdayService;
impl binder::Interface for BirthdayService {}
impl IBirthdayService for BirthdayService {
fn wishHappyBirthday(&self, name: &str, years: i32) -> binder::Result<String> {
Ok(format!("З днем народження {name}, вітаємо з {years} роками!"))
}
}
birthday_service/Android.bp:
rust_library {
name: "libbirthdayservice",
srcs: ["src/lib.rs"],
crate_name: "birthdayservice",
rustlibs: [
"com.example.birthdayservice-rust",
"libbinder_rs",
],
}
- Вкажіть шлях до створеного трейту
IBirthdayService
і поясніть, навіщо потрібен кожен з сегментів. - TODO: Що робить трейт
binder::Interface
? Чи є методи для перевизначення? Де знаходиться вхідний код?