Producenci OEM powinni jak najszybciej przejść na najnowszą wersję car-ui-lib-plugin-apis (1.2.0 lub nowszą). Idealnie byłoby, gdyby producenci OEM nie dostarczali żadnych wtyczek, które korzystają ze starszej wersji.
Dlaczego warto wykonać aktualizację?
Interfejsy APIJava 8+ są obsługiwane w poprzednich wersjach Androida dzięki obsłudze desugaryzacji interfejsów API Java 8+. Implementacje brakujących interfejsów API są kompilowane w aplikacjach, a kod bajtowy plików APK jest przepisywany tak, aby odwoływał się do implementacji zamiast do bibliotek na platformie.
Wczytywanie implementacji OEM komponentów interfejsu z wtyczki biblioteki Car UI wymaga odwoływania się do metod zdefiniowanych przez interfejsy car-ui-lib-plugin-apis. Te odwołania do metod są wykonywane z aplikacji do wtyczek biblioteki Car UI w czasie działania z założeniem, że sygnatury metod są identyczne w implementacjach aplikacji i wtyczek.
Niektóre systemy kompilacji włączają desugaryzację interfejsów API przez cały czas ze względu na wymagania dotyczące określonego minimalnego poziomu pakietu SDK. Desugaryzowane sygnatury metod dla interfejsów car-ui-lib-plugin-apis mogą nie pasować do sygnatur w implementacji wtyczki OEM, która nie została desugaryzowana, co powoduje, że wtyczki nie mogą się wczytać.
W rezultacie niektóre aplikacje GAS skompilowane za pomocą wewnętrznego systemu kompilacji Google są niezgodne z wtyczką biblioteki Car UI. Dlatego usunęliśmy wszystkie zależności od interfejsów API Java 8 (i nowszych), które wymagają desugaryzacji. Ta zmiana wymaga aktualizacji interfejsu API interfejsów zdefiniowanych przez car-ui-lib-plugin-apis.
Kroki wymagane w przypadku wtyczek OEM
Aby zaktualizować interfejs API, wykonaj te czynności:
Zaktualizuj implementację wtyczki, aby korzystała z najnowszej wersji
car-ui-lib-plugin-apis. Aby uzyskać najnowszą wersję (1.2.0 lub nowszą), zapoznaj się z repozytorium Maven Google.Zaktualizuj implementację wtyczki, aby implementowała interfejs
PluginFactoryOEMV4. Ta zmiana wymaga wykonania tych czynności, gdy komponent jest implementowany przez wtyczkę OEM. Zaktualizuj implementację OEM:Paska narzędzi, aby implementować
ToolbarControllerOEMV2.Elementów listy treści, aby rozszerzać
ContentListItemOEMV2.Obsługi wyników wyszukiwania IME, aby rozszerzać
ImeSearchInterfaceOEMV2.
Zaktualizuj aplikację, aby korzystała z najnowszej wersji biblioteki Car UI.
Co się stanie, jeśli ta aktualizacja nie zostanie zastosowana?
Jeśli w przypadku wtyczki OEM nie zostaną wykonane czynności opisane na tej stronie, odludzkrzane aplikacje, takie jak Usługi motoryzacyjne Google (GAS), nie będą mogły wczytać implementacji wtyczki biblioteki Car UI, a żadne dostosowania OEM nie zostaną zastosowane za pomocą mechanizmu wtyczek.
Ten problem nie wpływa na dotychczasowe dostosowania RRO w bibliotece Car UI i nadal działają one normalnie.