Skip to content

COVESA/covesa-aosp-sdk

Repository files navigation

Status - Incubating

COVESA AOSP SDK

Objective of this SDK

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.

SDK components

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.

API Artifacts

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.

Integration with third-party apps

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"))
    ...
}

Samples

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.

Client testing

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.

Maintainers

  • Juhani Lehtimäki - Snapp Automotive
  • José Freitas - FORVIA