The main goal of this SDK is to provide a set of libraries which allow third-party applications to access some automotive features in a way that is agnostic of manifacturer and model.
The SDK puts into communication 3 components:
- Client app: the third party-app that wants to interact with manufacturers cars.
- Server app: the service that each manufacturer needs to implement on their cars.
- AIDL: it’s the interface used for remote communication between the client and server apps.
The AIDL definition for the SDK is contained in the api/aidl gradle module. The official Google documentation about the AIDL format can be found here.
While client apps developers can directly use the AIDL to establish a connection with the SDK service, an utility layer is defined in the api/client gradle module. This layer hides most of the complexity of the AIDL connection by exposing a modern, more developer-friendly interface.
Both API libraries artifacts can be generated by using the following commands:
./gradlew :api:aidl:assemble
./gradlew :api:client:assemble
The generated aar
library files can then be found in the build/output/aar
folders for each module.
The generated aar
libraries can be added as dependency for a third-party app by copying them in a folder in the app project tree and adding the following in the app module build.gradle.kts
:
dependencies {
implementation(files("../libs/aidl-debug.aar"))
implementation(files("../libs/client-debug.aar"))
...
}
Example implementations for both the client and server libraries integrations can be found in the samples modules of this repo. Each sample contains its own readme widh more detailed information.
Third party app developers can test the library correct integration by installing the server sample in any Android emulator (even a non-automotive one) running a minimum Android SDK version as defined in the library configuration.
The server sample acts both as a reference for car manufacturers but also it logs every request received by client apps and responds updating each registered listener in a realistic way. That can be used to test third party apps behavior.
- Juhani Lehtimäki - Snapp Automotive
- José Freitas - FORVIA