Service Implementation
We can now implement the AIDL service:
birthday_service/src/lib.rs:
use com_example_birthdayservice::aidl::com::example::birthdayservice::IBirthdayService::IBirthdayService;use com_example_birthdayservice::binder;/// The `IBirthdayService` implementation.pub struct BirthdayService;impl binder::Interface for BirthdayService {}impl IBirthdayService for BirthdayService {fn wishHappyBirthday(&self, name: &str, years: i32) -> binder::Result<String> {Ok(format!("Happy Birthday {name}, congratulations with the {years} years!"))}}
birthday_service/Android.bp:
rust_library {name: "libbirthdayservice",srcs: ["src/lib.rs"],crate_name: "birthdayservice",rustlibs: ["com.example.birthdayservice-rust","libbinder_rs",],}
- Point out the path to the generated
IBirthdayServicetrait, and explain why each of the segments is necessary. - TODO: What does the
binder::Interfacetrait do? Are there methods to override? Where source?