Host aplikacji samochodowej Android Open Source Project (AOSP) jest częścią biblioteki aplikacji samochodowych używanej przez zewnętrznych programistów (3P) do udostępniania aplikacji dla Android Automotive. Host aplikacji to aplikacja systemowa, która umożliwia aplikacjom samochodowym 3P renderowanie w jej imieniu komponentów interfejsu użytkownika w stylu OEM.
Aby uruchomić aplikacje 3P, należy zainstalować zarówno aplikację 3P, jak i hosta aplikacji samochodowej AOSP:
- Automotive App Host zapewnia aplikacjom 3P zestaw szablonów interfejsu użytkownika i komponentów zoptymalizowanych pod kątem pojazdów, w tym funkcje takie jak użyteczność i bezpieczeństwo.
- Producenci OEM mogą stylizować te szablony i komponenty interfejsu użytkownika.
- Wynik? Aplikacje 3P są wizualnie dobrze zintegrowane z systemem informacyjno-rozrywkowym producenta OEM.
Na tej stronie wyjaśniono, jak wygenerować hosta aplikacji samochodowej AOSP z projektu Gradle w branży ub-automotive
, a następnie jak zintegrować hosta aplikacji motoryzacyjnej AOSP z docelowymi miejscami samochodowymi.
Sprawdź kod
Aby sprawdzić uwolniony kod:
- Uruchom następujące 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 Inicjowanie klienta Repo .
- Zainstaluj Android Studio .
Utwórz plik APK hosta AOSP
- Sprawdź
ub-automotive
, a następnie otwórz projekt Gradle wpackages/apps/Car/Templates/Host
. - Aby skonfigurować projekt za pomocą zestawu SDK systemu Android, skonfiguruj plik
local.properties
swojego projektu. Ścieżkę znajdziesz w Ustawieniach zestawu SDK systemu Android w Android Studio.sdk.dir=${path_to_android_sdk_location}
- Utwórz hostujący plik APK jako typowy projekt Gradle. Na przykład uruchom polecenie
gradle
:./gradlew :app:assembleDebug
Plik APK znajduje się w:
packages/apps/Car/Templates/Host/app/build/outputs/apk/debug/app-debug.apk
Osadź hosta AOSP
- Utwórz nowy plik
Android.mk
, który będzie zawierał następującą treść: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 tym samym folderze coAndroid.mk
. - Dodaj moduł
CarAOSPHost
do swoich celów jakoPRODUCT_PACKAGES
:PRODUCT_PACKAGES += \ CarAOSPHost \
Dodaj konfigurację uprawnień
- Utwórz plik o nazwie
com.android.car.templates.host.xml
, który będzie zawierał następujące elementy:<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 swoim celu dodaj plik konfiguracyjny do swoich celów:
PRODUCT_COPY_FILES += \ <the file root>/com.android.car.templates.host.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/com.android.car.templates.host.xml
Zbuduj cel
Kiedy budujesz cel, host jest instalowany i udzielane jest pozwolenie:
… android.car.permission.CAR_NAVIGATION_MANAGER: granted=true android.car.permission.CAR_DISPLAY_IN_CLUSTER: granted=true android.car.permission.TEMPLATE_RENDERER: granted=true …
Przetestuj integrację
Aby skompilować i zainstalować przykłady, zobacz ten projekt GitHub, car-samples/car_app_library .