Appendix C, Minimum Compatible Version for Car UI Plugin API

Stay organized with collections Save and categorize content based on your preferences.

OEMs are expected to switch to the newest version of car-ui-lib-plugin-apis (1.2.0 or higher) as soon as possible. Ideally, OEMs should not ship any plugin that uses an older version.

Why this update?

Java 8+ APIs are supported for previous versions of Android through Java 8+ API desugaring support. Implementations of missing APIs are compiled into apps and the byte code of APKs are rewritten to reference the implementations instead of the libraries on the platform.

Loading OEM implementations of UI components from a Car UI Library plugin requires the referencing of methods defined by car-ui-lib-plugin-apis interfaces. These method references are made from apps to Car UI Library plugins at runtime with the expectation that method signatures are identical in app and plugin implementations.

Some build systems enable API desugaring at all times due to requirements of a specific minimum SDK level. Desugared method signatures for car-ui-lib-plugin-apis interfaces may not match those in an OEM plugin implementation that has not been desugared, which results in plugins failing to load.

As a result, some GAS apps compiled with the internal Google build system are incompatible with the Car UI Library plugin. Therefore, we've removed all dependencies on Java 8 (and higher) APIs that require desugaring. This change requires updates to the API of the interfaces defined by car-ui-lib-plugin-apis.

Required steps for OEM plugins

The steps below describe how to update your API.

  1. Update the plugin implementation to use the latest version of car-ui-lib-plugin-apis. To get the latest version of (1.2.0 or higher), see Google's Maven Repository.

  2. Update the plugin implementation to implement the PluginFactoryOEMV4 interface. This change requires the following steps when a component is implemented by the OEM plugin. Update the OEM implementation of:

    1. Toolbar, to implement ToolbarControllerOEMV2.

    2. Content list items, to extend ContentListItemOEMV2.

    3. IME search results handing, to extend ImeSearchInterfaceOEMV2.

  3. Update the app to use the latest version of the Car UI Library.

What happens if this update is not applied?

If the steps provided above are not completed for an OEM plugin, desugared apps, such as the Google Automotive Services (GAS), fail to load implementations of the Car UI Library plugin and no OEM customizations are applied through the plugin mechanism.

Existing RRO customizations for the Car UI Library are not affected by this issue and continue to perform as usual.