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 shouldn't 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
Follow these steps to update your API:
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.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:Toolbar, to implement
ToolbarControllerOEMV2
.Content list items, to extend
ContentListItemOEMV2
.IME search results handing, to extend
ImeSearchInterfaceOEMV2
.
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 on this page aren't 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.