Android Open Source Project (AOSP) Automotive App Host jest częścią biblioteki aplikacji w samochodzie używane przez zewnętrznych deweloperów do obsługi aplikacji na Androida Automotive. App Host to system, aplikacja, która pozwala aplikacjom samochodowym innych firm renderować w jej imieniu komponenty interfejsu użytkownika w stylu OEM.
Aby można było uruchamiać aplikacje innych firm, zarówno aplikacja tej firmy, jak i host aplikacji AOSP Automotive App Host muszą zainstalowano:
- Automotive App Host udostępnia aplikacjom innych firm z zestawem szablonów i komponentów UI zoptymalizowane pod kątem pojazdów, m.in. pod kątem łatwości obsługi i bezpieczeństwa.
- OEM może zmieniać styl tych szablonów i komponentów.
- Efekt? Aplikacje innych firm są dobrze zintegrowane systemu multimedialnego OEM.
Na tej stronie wyjaśniamy, jak wygenerować host aplikacji AOSP Automotive z projektu Gradle w
ub-automotive
, a następnie dowiesz się, jak zintegrować z samochodem host aplikacji AOSP Automotive App Host.
celów.
Sprawdź kod
Aby sprawdzić niepołączony kod:
- Uruchom to polecenie:
repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master repo sync -j4
Aby dowiedzieć się więcej o pracy z kodem źródłowym AOSP, zobacz Zainicjuj klienta Repo.
- Zainstaluj Android Studio.
Tworzenie pliku APK hosta AOSP
- Sprawdź zadanie
ub-automotive
, a następnie otwórz projekt Gradle wpackages/apps/Car/Templates/Host
- Aby skonfigurować w projekcie pakiet SDK na Androida, skonfiguruj w projekcie parametry
local.properties
. Ścieżka znajduje się w ustawieniach pakietu Android SDK w Androidzie Studio.sdk.dir=${path_to_android_sdk_location}
- Utwórz główny plik APK jako typowy projekt Gradle. Na przykład uruchom
gradle
polecenie:./gradlew :app:assembleDebug
Lokalizacja pliku APK to:
packages/apps/Car/Templates/Host/app/build/outputs/apk/debug/app-debug.apk
Umieszczanie hosta AOSP
- Utwórz nowy plik
Android.mk
, który będzie zawierał te treści:LOCAL_PATH := $(my-dir) ################## Start of AOSPHost target ################## include $(CLEAR_VARS) LOCAL_MODULE := CarAOSPHost LOCAL_LICENSE_KINDS := legacy_notice LOCAL_LICENSE_CONDITIONS := notice LOCAL_MODULE_OWNER := google LOCAL_SRC_FILES := AOSPHost.apk LOCAL_MODULE_CLASS := APPS LOCAL_MODULE_TAGS := optional LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX) LOCAL_BUILT_MODULE_STEM := package.apk LOCAL_CERTIFICATE := PRESIGNED LOCAL_PRIVILEGED_MODULE := true LOCAL_PRODUCT_MODULE := true LOCAL_DEX_PREOPT := false include $(BUILD_PREBUILT)
- Zmień nazwę pliku
app-debug.apk
naAOSPHost.apk
i umieść plik APK w pliku APK w tym samym folderze coAndroid.mk
. - Dodaj moduł
CarAOSPHost
do celów jakoPRODUCT_PACKAGES
:PRODUCT_PACKAGES += \ CarAOSPHost \
Dodawanie konfiguracji uprawnień
- Utwórz plik o nazwie
com.android.car.templates.host.xml
zawierający:<permissions> <!-- Rename the package to com.android.car.templates.host --> <privapp-permissions package="com.android.car.templates.host"> <!-- To be able to display activities in the cluster --> <permission name="android.car.permission.CAR_DISPLAY_IN_CLUSTER" /> <!-- To be able to show navigation state (turn by turn directions) in the cluster.--> <permission name="android.car.permission.CAR_NAVIGATION_MANAGER" /> <!-- To be considered a system-approved host --> <permission name="android.car.permission.TEMPLATE_RENDERER" /> </privapp-permissions> <!-- Declare support for templated applications. --> <feature name="android.software.car.templates_host" /> </permissions>
- W miejscu docelowym dodaj plik konfiguracyjny do miejsc docelowych:
PRODUCT_COPY_FILES += \ <the file root>/com.android.car.templates.host.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/com.android.car.templates.host.xml
Tworzenie środowiska docelowego
Podczas tworzenia środowiska docelowego host jest instalowany i udzielane są uprawnienia:
… android.car.permission.CAR_NAVIGATION_MANAGER: granted=true android.car.permission.CAR_DISPLAY_IN_CLUSTER: granted=true android.car.permission.TEMPLATE_RENDERER: granted=true …
Testowanie integracji
Aby skompilować i zainstalować przykłady, wyświetl ten projekt GitHub: car-samples/car_app_library.