Android Açık Kaynak Projesi (AOSP) Automotive App Host, üçüncü taraf (3P) geliştiriciler tarafından Android Automotive'e yönelik uygulamaları etkinleştirmek için kullanılan Car App Library'nin bir parçasıdır. Uygulama Ana Makinesi, 3. taraf araba uygulamalarının kendi adına OEM tarzı kullanıcı arayüzü (UI) bileşenleri oluşturmasına olanak tanıyan bir sistem uygulamasıdır.
Üçüncü taraf uygulamalarını çalıştırmak için hem üçüncü taraf uygulaması hem de AOSP Automotive App Host'un yüklü olması gerekir:
- Automotive App Host, 3. taraf uygulamalarına kullanılabilirlik ve güvenlik gibi özellikler de dahil olmak üzere araçlar için optimize edilmiş bir dizi kullanıcı arayüzü şablonu ve bileşeni sağlar.
- OEM'ler bu kullanıcı arayüzü şablonlarını ve bileşenlerini şekillendirebilir.
- Sonuç mu? 3. taraf uygulamaları, OEM'nin bilgi-eğlence sistemine görsel olarak iyi entegre edilmelidir.
Bu sayfada, ub-automotive dalındaki Gradle projesinden AOSP Automotive App Host'un nasıl oluşturulacağı ve ardından AOSP Automotive App Host'un araba hedeflerine nasıl entegre edileceği açıklanmaktadır.
Koda göz atma
Paketinden çıkarılmış kodu incelemek için:
- Aşağıdaki komutu çalıştırın:
repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master repo sync -j4
AOSP kaynak koduyla çalışma hakkında daha fazla bilgi edinmek için Repo istemcisini başlatma başlıklı makaleyi inceleyin.
- Android Studio'yu yükleyin.
AOSP ana makine APK'sını oluşturma
ub-automotivebölümüne göz atın ve ardındanpackages/apps/Car/Templates/Hostaltında Gradle projesini açın.- Projeyi Android SDK ile yapılandırmak için projenizin
local.propertiesdosyasını yapılandırın. Yolu Android Studio'daki Android SDK Ayarları bölümünde bulabilirsiniz.sdk.dir=${path_to_android_sdk_location}
- Ana makine APK'sını normal bir Gradle projesi olarak oluşturun. Örneğin,
gradlekomutunu çalıştırın:./gradlew :app:assembleDebug
APK dosyası şu konumda bulunur:
packages/apps/Car/Templates/Host/app/build/outputs/apk/debug/app-debug.apk
AOSP ana makinesini yerleştirme
- Aşağıdaki içeriği eklemek için yeni bir
Android.mkdosyası oluşturun: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)
app-debug.apkdosyasınıAOSPHost.apkolarak yeniden adlandırın ve APK'yıAndroid.mkile aynı klasöre yerleştirin.CarAOSPHostmodülünü hedeflerinizePRODUCT_PACKAGESolarak ekleyin:PRODUCT_PACKAGES += \ CarAOSPHost \
İzin yapılandırmasını ekleme
- Aşağıdakileri içeren
com.android.car.templates.host.xmladlı bir dosya oluşturun:<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>
- Hedefinizde, yapılandırma dosyasını hedeflerinize ekleyin:
PRODUCT_COPY_FILES += \ <the file root>/com.android.car.templates.host.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/com.android.car.templates.host.xml
Hedefi oluşturma
Hedefi oluşturduğunuzda, ana makine yüklenir ve izin verilir:
… android.car.permission.CAR_NAVIGATION_MANAGER: granted=true android.car.permission.CAR_DISPLAY_IN_CLUSTER: granted=true android.car.permission.TEMPLATE_RENDERER: granted=true …
Entegrasyonu test etme
Örnekleri oluşturup yüklemek için car-samples/car_app_library adlı GitHub projesine bakın.