Реалізація сервісу

Тепер ми можемо реалізувати сервіс 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", ], }

Speaker Notes

  • Вкажіть шлях до створеного трейту IBirthdayService і поясніть, навіщо потрібен кожен з сегментів.
  • TODO: Що робить трейт binder::Interface? Чи є методи для перевизначення? Де знаходиться вхідний код?