android auto 客户端 android auto怎么样_python

本文原作者: 小虾米君,原文发布于: TechMerger

WWDC 2022 上野心勃勃的 CarPlay 让不少车企感受了更多可能,也让不少车企察觉到了危机。

Google 亦在车机上早有布局,包括 Android AutoAutomotive。虽推出已有数年,但中国开发者还很陌生,今天让我们来简单了解一下。

android auto 客户端 android auto怎么样_java_02

Android Automotive OS, AAOS

android auto 客户端 android auto怎么样_python_03

Android Automotive OS 简称 AAOS,是扩展自 Android OS 的操作系统、直接基于车载硬件运行。和 Android 一样是一个可定制程度非常高的全栈开源平台。

在电动车大浪潮下,可为车企的信息娱乐体验提供强大的技术支持。同时为了兼容性考虑,AAOS 支持专为 Android 打造的应用,以及专为 Android Auto 打造的应用。

android auto 客户端 android auto怎么样_android auto 客户端_04

Android VS Android Auto VS AAOS

Auto 和 Automotive 的命名比较相似,貌似分不清楚,实则区别非常明显。

android auto 客户端 android auto怎么样_android auto 客户端_05

首先,Android Auto 不是 OS。它是集成在 Android OS 里的 feature。当通过 USB、Wi-Fi 将 Android Phone 连接到支持 Android Auto 的车机上后,Android OS 将自动加载支持 Auto 模式下的 App 并将图像投屏到车机屏幕上。

跟 CarPlay 一样,其本质上是投屏。Phone 提供计算、渲染,车机只是 Display,Display 和按键回传 Input 的事件,Phone 处理好之后将新的帧数据回传进行 Display。

而 Android Automotive 是 OS,其归属于 AOSP 项目,代码也在 Android OS 之中。在编译的时候选择 automotive 的编译 target 即可生成车载机使用的 AAOS。

它支持加载 Android Auto 的 App,即将 Android Phone 和 AAOS 车机仍旧能像 Android Auto 一样使用。同时支持 Android OS 的 App,即不适配车载机亦能运行在 AAOS 上。这可能也是主流互联网 App 无意适配 AAOS 的部分原因,同时导致适配车机 UI 的任务落到了车企身上。

Android Eco

What

Target

Compativity

Android

OS

Phone

Android App

Android Auto

Platform

Phone when connected toCar supported Auto

Android App supported Auto

AAOS

OS

Car

Android + Auto + AAOS App

android auto 客户端 android auto怎么样_移动开发_06

Develop Apps for Android Cars

模拟器

车机资源比较宝贵、稀少,很难像手机、平板设备一样非常便捷地在真机上开发和测试,而模拟器则是比较好的选择。Google 和车企都有相应的 AAOS Image 可供创建模拟器。

Generic AOSP Image

官方说 9.0 公开了 AAOS Image,打开 AS 的 SDK Manager 页面反复刷新和尝试都没有出现官方的 Image Item。偶然间还会出现如下的错误: 

No System Images available. Are you connected to the internet?

即基于未知原因官方暂时下架了 AAOS 的 Image。

android auto 客户端 android auto怎么样_移动开发_07

OEM Image

好在 Volvo 及旗下的 Polestar 作为最早开发 Android Automotive 车机的车企,对外公开了 Image。虽不支持 ARM 架构,可以在 PC 上安装体验。

在 SDK Manager 的 SDK Update Sites 页面可以添加如下的 Url 来添加 Volvo 的站点:

https://developer.volvocars.com/sdk/volvo-sys-img.xml

android auto 客户端 android auto怎么样_android_08

添加好了之后,可以再次打开 SDK Manager 页面,就可以在 SDK Platforms 页面看到 Volvo 的 Image 了。

android auto 客户端 android auto怎么样_python_09

Check 之后会自动下载,像手机 Image 一样方便的创建 Automotive 车机模拟器。

android auto 客户端 android auto怎么样_java_10

启动之后,可以看到整体界面:

android auto 客户端 android auto怎么样_java_11

除了 Drawer、Video、座椅、空调等 Icon 以外还有 Map、BT、Google Assistant 这几个常用 App。

点击 Assistant App 可以进行语音操作: 

android auto 客户端 android auto怎么样_python_12

点击抽屉按钮,可以看到除了 Map、BT、Google Assistant 还可以看到 Google Play、Car 使用说明这几个 App。

android auto 客户端 android auto怎么样_android auto 客户端_13

Car 使用说明 App 的截图:

android auto 客户端 android auto怎么样_android auto 客户端_14

Polestar2 车型也对外公开了 Image,像上面一样添加如下的 Url 即可创建其模拟器: 

https://developer.polestar.com/sdk/polestar2-sys-img.xml

不亏是一家的,界面和 Volvo 差不多,Launcher 的布局由列表布局改成了四宫格。

android auto 客户端 android auto怎么样_python_15

其他也有车企采用了 AAOS,比如 Honda,只是没有公开。

Develop Apps

接下来就可以开发针对 AAOS 的 App 了,官方提供了 Car 相关的 SDK 供我们开发,即 Android for Cars App Library。为了兼容非 Car 的设备集成到了 AndroidX 中。

android auto 客户端 android auto怎么样_java_16

另外针对导航等几个场景提供了开发 Sample: 

https://github.com/android/car-samples

这些 Sample 的优势在于,其兼顾了 Phone 和 Automotive 两种开发场景。将 App 共通的 Car 部分放置在 Common Module 里,各自的逻辑放在独立的 Module 中。

android auto 客户端 android auto怎么样_android_17

好处是编译 Phone Task 的话生成的 Apk 安装在 Phone 上,当其进入 Android Auto 模式之后会自动加载 Common 里的 Car 逻辑。而编译到 Automotive 的 Apk 可直接运行在 AAOS 上,以执行 Common 逻辑和特有的 Car 逻辑。

有点需要注意的是该 Sample 的 Gradle 和 AGP 版本需要升级到最新,才能编译通过。

Phone 运行到 Auto

可以利用 DHU 将手机转为 Android Auto 模式,这样的话就可以测试 App 的 Auto 模式下的表现。

android auto 客户端 android auto怎么样_android_18

Automotive 运行在 AAOS

Automotive 的 Sample Apk 运行到 Volvo 和 Polestar2 模拟器中都是如下结果,貌似无法正常使用。

android auto 客户端 android auto怎么样_java_19

经过日志排查和文档确认发现 Sample 依赖了 Car 中最新的特性,需要 AAOS 去下载和安装最新版的 Google Automotvie App Host Apk。

android auto 客户端 android auto怎么样_android auto 客户端_20

android auto 客户端 android auto怎么样_android_21

可是遇到如下问题,无法安装: 

  1. 该 App 需要 11 及以上的 AAOS 系统,而 Volvo 和 Polestar2 公开的最新的版本都是 10;
  2. 该 App 在 APK Downloader 等网站上均无法直接下载;
  3. Volvo 的 AAOS Emulator 上 GooglePlay 无法连接网络。

android auto 客户端 android auto怎么样_java_22

android auto 客户端 android auto怎么样_java_23

结语

虽然 Sample 运行遇到了点问题,但是成功地运行了 AAOS 模拟器,也感受了一下 Car 的开发 Module 构成。

后续将继续深入研究 AAOS 上 App 开发的特有场景,敬请期待。