Producenci OEM powinni jak najszybciej przejść na najnowszą wersję car-ui-lib-plugin-apis
(1.2.0 lub nowszą). W idealnej sytuacji OEM nie powinien dostarczać żadnych wtyczek, które korzystają ze starszej wersji.
Dlaczego wprowadzamy tę zmianę?
Interfejsy API Java 8 lub nowsze są obsługiwane w poprzednich wersjach Androida dzięki obsługi dezasugarowania interfejsów API w Java 8 lub nowszej wersji. Implementacje brakujących interfejsów API są kompilowane w aplikacji, a kod bajtowy plików APK jest przepisywany, aby odwoływał się do implementacji zamiast do bibliotek na platformie.
Ładowanie implementacji komponentów interfejsu użytkownika przez OEM z plugina biblioteki Car UI wymaga odwoływania się do metod zdefiniowanych przez interfejsy car-ui-lib-plugin-apis
. Odwołania do tych metod są wykonywane w aplikacji w czasie działania w przypadku wtyczek biblioteki Car UI z założeniem, że sygnatury metod są identyczne w implementacjach aplikacji i wtyczki.
Niektóre systemy kompilacji umożliwiają desugarowanie interfejsu API przez cały czas ze względu na wymagania dotyczące określonego minimalnego poziomu pakietu SDK. Podpisy zdesaturowanych metod interfejsów car-ui-lib-plugin-apis
mogą nie być zgodne z podpisami w implementacji wtyczki OEM, która nie została zdesaturowana. W efekcie wtyczki nie będą się wczytywać.
W związku z tym niektóre aplikacje GAS skompilowane za pomocą wewnętrznego systemu kompilacji Google są niezgodne z wtyczką Car UI Library. Dlatego usunęliśmy wszystkie zależności od interfejsów API Javy 8 (i wyższych), które wymagają desugaringu. Ta zmiana wymaga aktualizacji interfejsów API zdefiniowanych przez car-ui-lib-plugin-apis
.
Wymagane działania w przypadku wtyczek OEM
Aby zaktualizować interfejs API:
Zaktualizuj implementację wtyczki, aby używać najnowszej wersji
car-ui-lib-plugin-apis
. Aby pobrać najnowszą wersję (1.2.0 lub nowszą), odwiedź repozytorium Maven Google.Zaktualizuj implementację wtyczki, aby zaimplementować interfejs
PluginFactoryOEMV4
. Ta zmiana wymaga wykonania tych czynności, gdy komponent jest implementowany przez wtyczkę OEM. Zaktualizuj implementację OEM:Pasek narzędzi, aby wdrożyć
ToolbarControllerOEMV2
.Elementy listy treści, aby rozszerzyć
ContentListItemOEMV2
.Obsługa wyników wyszukiwania IME, aby rozszerzyć
ImeSearchInterfaceOEMV2
.
Zaktualizuj aplikację, aby używać najnowszej wersji biblioteki Car UI.
Co się stanie, jeśli ta aktualizacja nie zostanie zastosowana?
Jeśli kroki podane na tej stronie nie zostaną wykonane w przypadku wtyczki OEM, desugarowane aplikacje, takie jak Google Automotive Services (GAS), nie będą mogły wczytywać implementacji wtyczki Car UI Library, a OEM nie będzie mógł stosować żadnych dostosowań za pomocą mechanizmu wtyczki.
Ten problem nie ma wpływu na dotychczasowe funkcje RRO w bibliotece Car UI, które nadal działają normalnie.