汽车应用

构建适用于 Android Auto 和 Android Automotive OS 的模板化应用。
最近更新时间 稳定版 候选版 Beta 版 Alpha 版
2024 年 11 月 13 日 1.4.0 - 1.7.0-beta03 -

声明依赖项

如需添加汽车应用库的依赖项,您必须将 Google Maven 制品库添加到项目中。如需了解详情,请参阅 Google 的 Maven 制品库

在应用或模块的 build.gradle 文件中添加所需工件的依赖项:

Groovy

dependencies {
    implementation "androidx.car.app:app:1.4.0"

    // For Android Auto specific functionality
    implementation "androidx.car.app:app-projected:1.4.0"

    // For Android Automotive specific functionality
    implementation "androidx.car.app:app-automotive:1.4.0"

    // For testing
    testImplementation "androidx.car.app:app-testing:1.4.0"
}

Kotlin

dependencies {
    implementation("androidx.car.app:app:1.4.0")

    // For Android Auto specific functionality
    implementation("androidx.car.app:app-projected:1.4.0")

    // For Android Automotive specific functionality
    implementation("androidx.car.app:app-automotive:1.4.0")

    // For testing
    testImplementation("androidx.car.app:app-testing:1.4.0")
}

如需详细了解依赖项,请参阅添加 build 依赖项

反馈

您的反馈将帮助我们改进 Jetpack。如果您发现了新问题,或对此库有任何改进建议,请告诉我们。创建新问题前,请先查看此库中的现有问题。您可以点击星标按钮,为现有问题投票。

创建新问题

如需了解详情,请参阅问题跟踪器文档

版本 1.7

版本 1.7.0-beta03

2024 年 11 月 13 日

修复了安全漏洞和其他常规 bug。如果您使用的是较低版本,请更新到此版本

发布了 androidx.car.app:app-*:1.7.0-beta03。版本 1.7.0-beta03 包含这些提交内容

API 变更

  • 更新了 CAL 序列化 / 反序列化代码,以便仅处理声明了注解 @CarProtocol 的对象。(Ic730e)
  • CarAppExtender 现在可用于扩展框架 Notification.Builder,而不仅仅是 NotificationCompat.Builder。(Id3ad7)
  • 添加了 KEY_EXCLUDE_MEDIA_ITEM_FROM_MIXED_APP_LIST extra。(I201f9)
  • 废弃了 ConversationItem 上的空构建器构造函数,并将其替换为接受必需参数的构造函数。此外,还添加了检查以防范 null 消息。(Ic8221)

bug 修复

  • 确保 PlaceList 映射使用字符串(仅限文本)标题标头。(Ic992f)
  • 此库现在使用 JSpecify nullness annotations,即类型使用。Kotlin 开发者应使用以下编译器参数来强制执行正确的用法:-Xjspecify-annotations=strict, -Xtype-enhancement-improvements-strict-mode。(Ib5367b/326456246

版本 1.7.0-beta02

2024 年 9 月 18 日

发布了 androidx.car.app:app-*:1.7.0-beta02。版本 1.7.0-beta02 包含这些提交内容

API 变更

  • 添加了 KEY_ROOT_HINT_MEDIA_HOST_VERSION extra (I8796b)
  • TabContents.Builder 类中将 TabContents.Api8Builder 类替换为 @ExperimentalCarApi 构造函数 (I26fbe)
  • CarMediaApp 添加了 intent 操作和 extra (I50782)
  • 将消息传递 API 标记为非实验性 API (I0b070)
  • SectionedItemTemplate 添加了远程项加载功能(允许长列表加载且不会崩溃)(I0d122)
  • 在 API 8 中,将 SectionedItemTemplate 添加到 TabTemplate 内受支持的模板列表中。(Idc5d6)

bug 修复

  • 移除了手动说明对新平台 API 的访问权限,因为当将 R8 与 AGP 7.3 或更高版本(例如 R8 版本 3.3)搭配使用时,系统会通过 API 建模自动执行此操作;当使用 AGP 8.1 或更高版本(例如 D8 版本 8.1)时,系统会针对所有 build 自动执行此操作。建议不使用 AGP 的客户更新到 D8 8.1 或更高版本。如需了解详情,请参阅这篇文章。(I9496cb/345472586

版本 1.7.0-beta01

2024 年 6 月 26 日

发布了 androidx.car.app:app-*:1.7.0-beta01。版本 1.7.0-beta01 包含这些提交内容。功能与 alpha01 中发布的功能相同,如下所示:

新功能

  • 包含内容的地图:新模板,包含地图画布和内容模板,目前可以是列表 / 网格 / 窗格 / 消息。
    • RoutePreviewPlaceListNavigationMapTemplate 现已废弃。模板将继续按原样运行。
    • 示例应用已更新为显示 MapWithContent 用法,而不是已废弃的模板
  • 对话项:用于在汽车中显示对话(即时通讯、短信)和 Google 助理读出内容的新 API。
  • 车辆尺寸:用于检索车辆尺寸的新 API(目前的数据来自 AAOS)。

API 变更

  • MediaPlaybackTemplate.Builder 添加了 @ExperimentalCarApi 标记。(Ic1957)
  • 在实验性功能中添加了新的 SectionedItemTemplate。(I5958a)
  • 引入了 CarAppApiLevel 8 (I3fa22)
  • 添加了 MediaPlaybackTemplate,用于在汽车应用库中播放媒体内容期间显示内容。(I3c10d)
  • 添加了新的 API,供应用检测系统是否支持在驾车时播放后台音频 (I0f868)

bug 修复

  • 修复了 CAL 客户端代码和 CAL 导航示例应用中的某些内存泄漏和崩溃问题。I55e04
  • BaseCarAppActivityonDestroy 方法中的 requireNotNull instances 替换为 if-null 检查,以避免崩溃。(Iec676)

版本 1.7.0-alpha02

2024 年 4 月 17 日

发布了 androidx.car.app:app-*:1.7.0-alpha02。版本 1.7.0-alpha02 包含这些提交内容

新功能

  • 为基于地图的模板添加了已废弃的标志,MapWithContent 模板将在未来支持这些标志。

API 变更

  • 废弃了旧的 MapTemplateRoutePreviewNavigationTemplatePlaceListNavigationTemplate,并鼓励使用新的 MapWithContentTemplate (Ib0a08)

版本 1.7.0-alpha01

2024 年 4 月 3 日

发布了 androidx.car.app:app-*:1.7.0-alpha01。我们已将库版本号方案更改为与当前的 CarApi 版本一致。这是为了根据开发者反馈减少命名方案上的混淆。因此,我们将跳过版本 1.5 / 1.6,直接跳转到版本 1.7。版本 1.7.0-alpha01 包含这些提交内容

新功能

  • 包含内容的地图:名为 MapWithContent 的新模板,支持在地图中将列表 / 网格 / 窗格 / 消息用作内容。
    • RoutePreviewPlaceListNavigation 地图模板现已废弃。
    • 示例应用已更新,以展示使用 MapWithContent 的已废弃模板的功能。
  • 对话项:用于在汽车中显示对话(即时通讯、短信)和 Google 助理读出内容的新 API。
  • 车辆尺寸:用于检索车辆尺寸的新 API(目前的数据来自 AAOS)。

API 变更

  • 将超小行图片类型标记为实验性 (I5184b)
  • 添加了 CarInfo#fetchExteriorDimensions API,可访问车辆外部尺寸信息,例如高度、宽度等 (Ia40c5)
  • MapWithContentTemplate 中移除了 ExperimentalAPI 标记 (I66db8)
  • GridItem#setTitle 参数更新为可为 null。(I3d610)
  • GetHeader API 不需要 API 7,因为它向后兼容 (I8c812)
  • ListTemplate 中添加了对 Header 的支持,废弃了 headerActionheaderTitleactionStrip (I7ae01)
  • GridTemplate 中废弃了 titleheaderActionactionStrip,并添加了对 Header 的支持 (I41a9c)
  • 移除了对实验性 API 的级别 7 要求:标记、GridTemplate 项大小和图片形状 getter/setter、用于获取/设置标记的 GridItem 方法。(Id71eb)
  • 弃用了 PaneTemplate 中的 titleheaderActionactionStrip,添加了新的 Header 支持 (I23154)
  • 将 Media Center 遥测从 BroadcastReceiver 更改为“浏览自定义操作”。(I4185f)
  • MessageTemplate 中添加了对 Header 属性的支持。废弃了对 ActionStripheaderActiontitle 的支持。(Ie2de8)
  • 修改了提醒常量可见性 (Icf8a8)
  • 从父级模板中移除了 isLoading 属性 (I651e6)
  • 添加了 extras,以便告知媒体应用主要界面参数 (I85ca2)
  • MediaExtensions 添加了媒体中心分析功能 (I7ce28)
  • 添加了用于行中超小图片的选项。(I72c03)

bug 修复

  • 更新了 ConversationItem 的 Javadoc,以指明消息应按从旧到新的顺序排序。(I77a2a)
  • 更新了 ListTemplate 截断逻辑,以从 ConversationItem 中移除最早的消息 (Ie0a61)

版本 1.4

版本 1.4.0

2024 年 5 月 29 日

发布了 androidx.car.app:app-*:1.4.0。版本 1.4.0 是 1.4.0-rc02 的升级版。

自 1.3.0 以来的重要变更

  • 导航应用的仪表板地图渲染
  • 新标签页模板,可改进应用布局 / 易用性
  • 支持自适应任务限制
  • 列表元素的次要操作

版本 1.4.0-rc02

2023 年 12 月 13 日

发布了 androidx.car.app:app-*:1.4.0-rc02版本 1.4.0-rc02 中包含这些提交内容。仅进行了细微修复

bug 修复

  • 更新了 ConversationItem 的 javadoc,指明消息应按从旧到新的顺序排序 (I77a2a)
  • 更新了 ListTemplate 截断逻辑,以从 ConversationItem 中移除最早的消息 (Ie0a61)

版本 1.4.0-rc01

2023 年 11 月 1 日

发布了 androidx.car.app:app-*:1.4.0-rc01,该版本没有明显变化。版本 1.4.0-rc01 中包含这些提交内容

版本 1.4.0-beta02

2023 年 9 月 20 日

发布了 androidx.car.app:app-*:1.4.0-beta02版本 1.4.0-beta02 中包含这些提交内容。这与 beta01 几乎完全相同,但将 compileSdk 要求降低到了 33。

bug 修复

  • 修复了标签页上的加载屏幕无法正确显示的 bug。(cae860)

版本 1.4.0-beta01

2023 年 8 月 9 日

发布了 androidx.car.app:app-*:1.4.0-beta01版本 1.4.0-beta01 中包含这些提交内容

注意:1.4-beta01 需要 compileSdk34,但该版本仍处于开发状态。1.4-beta02 将修正此问题。或者,您也可以将 android.suppressUnsupportedCompileSdk=34 添加到项目的 settings.gradle 文件中,以安全地暂时性抑制警告。

新功能

API 变更

  • 请参阅 alpha02

版本 1.4.0-alpha02

2023 年 7 月 26 日

发布了 androidx.car.app:app-*:1.4.0-alpha02版本 1.4.0-alpha02 中包含这些提交内容

  • 发布 Alpha02 旨在为即将发布的 beta01 版做准备。

新功能

  • 仪表板上地图呈现功能支持导航应用
  • 为应用添加了标签页,以改善布局体验
  • 添加了列表 / 网格模板呈现选项
  • 为天气和通讯添加了新类别
  • 将多个 API 移至下一个 CarApi 7 版本

API 变更

  • CarMessage 添加了多媒体字段 (I5aaf6)
  • 在汽车应用库中向 ConversationItem 添加了自定义操作 (Ie5ed6)
  • 添加了 extra,以指明媒体内容是采用沉浸式音频格式播放的,并展示其内容格式徽标 (Icb5bb)
  • 添加了新的 Action 类型 ActionsConstraints API,以支持撰写按钮。(I31661)
  • set/getTemplate 设为了 set/get ContentTemplate (Ica036)
  • 模板参数现在为 @NonNull。更新了 MapWithContentTemplate API 文档 (I0f8ed)
  • 移除了 CAL 1.4 中启动时 ListTemplate 中的 Action 的 @ExperimentalCarApi 标记 (I2cfcb)
  • 移除了 TabTemplate@ExperimentalCarApi 标记 (Ifcb82)
  • 从行次要操作和装饰中移除了 @ExperimentalCarApi 注解 (I8487e)
  • TabTemplate 添加了活跃标签页内容 ID,并废弃了标签页上的活跃状态 (I96932)
  • GridTemplate 添加了 ItemImageShape 属性 (Ibf431)
  • GridTemplate 添加了 ItemSize 属性,该属性会根据相对的小、中、大分桶来控制网格项的大小。(Icdb3b)
  • 开放 API 访问权限,以便开发者获取当前屏幕堆栈的副本。(I48107)
  • 向汽车应用库添加了天气应用类别 (I2be44)
  • 向汽车应用库添加了用于调用应用的类别 (Icab33)
  • GridItem.Builder#setBadge() 替换为过载的 setImage() 方法 (Id2000)
  • 向徽章添加了图标属性 (I629b2)
  • 添加了用于设置圆点标记背景颜色的方法 (I6411c)
  • GridItem 添加了 Badge 属性,以允许在 GridItem 图片上显示徽章。(I95de7)
  • 添加了一个实验性 Badge 对象,用于表示要在图片上显示的徽章。(I9878d)

版本 1.4.0-alpha01

2023 年 2 月 22 日

发布了 androidx.car.app:app-*:1.4.0-alpha01版本 1.4.0-alpha01 中包含这些提交内容

API 变更

  • 在汽车应用库中向 GridTemplate 添加了顶级操作 (Id0191)
  • 在汽车应用库中向 ListTemplate 添加了顶级操作 (I9efab)
  • 添加了 extra,以便将媒体内容的字幕或说明与其他媒体内容关联 (Ic84bf)
  • 将行操作的 API 级别更新为级别 6。(Ie0a69)
  • 向 A4C 添加了消息回调 (Ie3986)

bug 修复

  • CarMessage 添加了缺失的 Java 文档引用。(I5db1c)
  • ConversationItemCarMessage 替换了 equals()hashCode() (I6fd10)
  • 改进了 ConversationItem.mMessages 验证(需要非 null、非空)(Iafc51)
  • ConversationItem 字段添加了 @Keep 注解 (I5d250)
  • 更新了行装饰和次要操作的 Java 文档。(I000b6)

版本 1.3

版本 1.3.0-rc01

2022 年 12 月 7 日

发布了 androidx.car.app:app-*:1.3.0-rc01版本 1.3.0-rc01 中包含这些提交内容

  • beta01 中的次要 bug 修复。无重大变更。

版本 1.3.0-beta01

2022 年 9 月 7 日

发布了 androidx.car.app:app:1.3.0-beta01androidx.car.app:app-projected:1.3.0-beta01androidx.car.app:app-automotive:1.3.0-beta01androidx.car.app:app-testing:1.3.0-beta01版本 1.3.0-beta01 中包含这些提交内容。

新功能

除了在汽车应用库 1.3.0-alpha01 中添加的功能之外,beta01 中还添加了以下功能(此处的所有功能仅涉及主机端更改,没有任何 API 更改):

  • 即使用户位于基于地图的选择屏幕中的 PlaceListNavigationTemplateRoutePreviewNavigationTemplateMapTemplate 内,浮动导航栏也会继续显示。为此,您可以通过 NavigationManager.updateTrip() 更新导航信息。
  • 使用 FLAG_DEFAULT 启用操作按钮,以设置超时动画。超时后,系统将会默认点击此按钮。([API 5 - All Templates])
  • Row 的辅助文本在汽车停放期间不会被截断,但在驾车时会被截断成 2 行。([API 5 - All Templates])
  • 支持 ActionToggleRow ([API 5 - All Templates]) 的停用状态

API 变更

  • 放宽了 MapTemplate 列表中的约束条件以支持可选列表 (I961ed)
  • 取消了对标头操作的约束条件,允许使用自定义图标。(Iad28f)
  • ActionsConstraints 添加了约束条件 setOnClickListenerAllowed(),它允许 ActionOnClickDelegate() 设置为标准图标类型以外的操作。(TYPE_APP_ICONTYPE_BACKTYPE_PAN)(I3c745)

bug 修复

版本 1.3.0-alpha01

2022 年 7 月 27 日

发布了 androidx.car.app:app:1.3.0-alpha01androidx.car.app:app-projected:1.3.0-alpha01androidx.car.app:app-automotive:1.3.0-alpha01androidx.car.app:app-testing:1.3.0-alpha01版本 1.3.0-alpha01 中包含这些提交内容

带有 API 级别 5 注解的功能与 Android Auto 7.9 及更高版本兼容。

新功能

  • API 级别 5:新增了 MapTemplate,导航应用可以使用它在地图旁边显示窗格或列表内容(If5826If44b8
  • API 级别 5:新增了 CarAudioRecord API,允许通过主机车辆的麦克风录制音频输入 (I5e71a)
  • API 级别 5:新增了 SuggestionManager API,允许应用向主机提供建议 (I5c103)
  • API 级别 5:新增了 Alert API,可在 NavigationTemplate 上显示上下文通知(I163a7I5ad70
  • API 级别 5:新增了 HeaderMapController 组件,以方便跨模板重复使用 (If5826)
  • 添加了 androidx.car.app.category.POI 作为启用地图注点应用的类别(并废弃了 androidx.car.app.category.PARKINGandroidx.car.app.category.CHARGING)(I59da1)

API 变更

  • API 级别 5:在 SurfaceCallback 接口中新增了 onClick 方法,以允许进行点按地图的互动操作 (Ia9777)
  • API 级别 5:新增了标记 Action.FLAG_IS_PERSISTENTAction.FLAG_DEFAULT,用于描述 ActionI96318I5ad70
  • API 级别 5:为 ActionRowToggle 组件新增了启用/停用状态(主机支持将在库版本 1.3.0-beta01 前后推出)(Id8a09)
  • API 级别 5:通过 PlaceListNavigationTemplate.BuilderRoutePreviewNavigationTemplate.Builder 上的 setHeader 支持新的 Header 组件,废弃现有的 setTitlesetHeaderAction 方法 (I30e6a)
  • API 级别 5:在 PlaceListMapTemplate.BuilderPlaceListNavigationTemplate.Builder 上新增了 setOnContentRefreshListner 方法,用于与新的 OnContentRefreshListner 接口实现搭配使用。
  • API 级别 5:在 TravelEstimate.Builder 上新增了 setTripTextsetTripIcon,用于自定义行程估算数据卡片(Idcc6dIc620d
  • 添加了对 PaneTemplate 标题中 CarIconSpan 的支持 (Ia1ee0)
  • 添加了对 Row 标题和文本中 CarIconSpan 的支持 (Ic1e3c)
  • 地图 ActionStrip 现在最多可以有四项操作 (If3522)
  • 将汽车应用 API 级别更新为 5 (I26b8e)
  • 现在,标头/标题对于 PlaceListMapTemplatePlaceListNavigationTemplateRoutePreviewNavigationTemplateGridTemplateListTemplateLongMessageTemplateMessageTemplatePaneTemplateSignInTemplate 是可选的(I2078dIcadde

bug 修复

  • PaneTemplate 图片大小调整规则更新为方形边界框 (Idd72e)
  • 修复了在 State.DESTROYED 之后修改屏幕堆栈时发生的异常。(I3c8eb)
  • 添加了用于检索应用图标的 null 检查 (I3f710)
  • 更新了 Car Hardware API,以便默认使用 STATUS_UNKNOWN 而不是 STATUS_UNAVAILABLE (Ic9444)
  • 在创建 Surface 之前检查显示屏是否存在 (Ice027a)
  • 修复了涉及 STATUS_UNIMPLEMENTEDCarValue.equals() bug (I24451)

版本 1.2

版本 1.2.0

2022 年 11 月 9 日

发布了 androidx.car.app:app-*:1.2.0版本 1.2.0 中包含这些提交内容

  • 这是一个稳定版本,与 v1.2.0-rc01 相比没有变化。

版本 1.2.0-rc01

2022 年 3 月 23 日

发布了 androidx.car.app:app-*:1.2.0-rc01版本 1.2.0-rc01 中包含这些提交内容

  • 这是一个稳定版本,与 v1.2.0-beta02 相比,API 没有变化。新增了专为未来的 Android Auto 和 Android Automotive 版本设计的实验性功能(API 级别 5)。

bug 修复

  • 修复了在 State.DESTROYED 之后修改屏幕堆栈时发生的异常。(I3c8eb)
  • 更新了 CarSensors API 以表明未针对 AAOS 实现这些 API (Idd57b)
  • 更新了 PlaceListMapTempalte.Builder#setCurrentLocationEnabled 以表明 ACCESS_COARSE_LOCATION 足以满足未来的需求 (I510c2)
  • 将 Maneuver 类型 roundabout-with-angle 的出口编号设为可选属性 (Ife7d1)

版本 1.2.0-beta02

2022 年 1 月 26 日

发布了 androidx.car.app:app-*:1.2.0-beta02版本 1.2.0-beta02 中包含这些提交内容

使用此库版本构建的针对 Android Automotive OS 平台的汽车应用现在可以发布到 Play 商店开放式测试渠道。如需了解详情,请参阅开发指南

带有 API 级别 4 及更低级别注解的功能与 Android Auto 7.2 及更高版本和新的 Android Automotive OS 平台兼容。如需了解注意事项,请参阅下文的“Known Issues”部分。

API 变更

  • 向地图注点模板添加了实验性 setOnContentRefreshListener API (I6bf22)

bug 修复

  • 修复了汽车主机取消绑定时 CarAppService 中发生内存泄漏的问题。(I5c9cab/203594731
  • 更新了 CarAppActivity javadoc,在其中添加了关于 singleTask 启动模式的要求 (Id2f95)
  • 减少了恢复时的视觉小故障。(Iff7e0)

已知问题

  • PlaceListNavigationTemplateRoutePreviewNavigateTemplate 中的地图 ActionStrip 将在 Android AutoAndroid Automotive OS 的下个版本中推出。

版本 1.2.0-alpha02

2021 年 12 月 15 日

发布了 androidx.car.app:app-*:1.2.0-alpha02版本 1.2.0-alpha02 中包含这些提交内容

带有 API 级别 4 注解的功能已从实验性功能升级为稳定功能,包括 PlaceListNavigationTemplateRoutePreviewNavigateTemplate 中的地图 ActionStripPane 中的 CarIcon 图像、QRCodeSignInMethod,以及在 Action 中设置渲染提示(例如标记)的功能。

新功能

  • 在 Android Auto 7.1 及更高版本中,Pane 的项目数量上限已从 2 提高至 4。

API 变更

  • CarUnit 中添加了实验性 toString() 方法 (I36a3b)

bug 修复

  • 修复了回调无效后在 CarAppPermissionActivity 中发生崩溃的问题 (If9823)
  • Pane 的默认列表上限更改为了 4 (I0068b)

版本 1.2.0-alpha01

2021 年 11 月 3 日

发布了 androidx.car.app:app-*:1.2.0-alpha01版本 1.2.0-alpha01 中包含这些提交内容

所有新的 v1.2.0 功能(API 4 及更高级别)目前都处于实验阶段,将会面向未来的 Android Auto 和 Android Automotive OS 版本发布。如需了解详情,请参阅开发指南

API 变更

  • AutomotiveCarInfo API 变为了实验性 API。(Ia13e5)
  • 添加了 Car App Library API 级别 4 (I2a2e7)
  • API 级别 4:现在支持在 Pane 中设置 CarIcon (Ifcc12)
  • API 级别 4:添加了二维码登录方法 (Ib623e)
  • API 级别 4:向 Action 添加了 set/getFlags (Ic03ab)
  • API 级别 4:在 PlaceListNavigationTemplateRoutePreviewNavigationTemplate 中添加了对平移和缩放的支持 (I9d8a3)

bug 修复

  • API 级别 4:添加了允许应用向汽车主机发送位置信息更新的机制 (I3bad3)
  • 修复了主机验证逻辑无法正确找到 TEMPLATE_RENDERER 权限的问题 (I62618)

版本 1.1.0

版本 1.1.0

2021 年 12 月 15 日

发布了 androidx.car.app:app-*:1.1.0版本 1.1.0 中包含这些提交内容

这是一个稳定版本,与 v1.1.0-rc01 相比没有变化。另请参阅 v1.2.0-alpha02 的版本说明,详细了解汽车应用库的新功能。

自 1.0.0 以来的重要变更

  • API 级别 2:SignInTemplateLongMessageTemplate 可用于车辆停好后的登录流程
  • API 级别 2:NavigationTemplate 内新增了地图互动支持
  • API 级别 2:支持多长度文本,使应用能够提供多个版本的字符串,以根据车载显示屏的尺寸显示相应版本。
  • API 级别 3:CarHardwareManager 可用于查询车辆的硬件数据,如型号和品牌、油位以及其他传感器。

版本 1.1.0-rc01

2021 年 11 月 3 日

发布了 androidx.car.app:app-*:1.1.0-rc01版本 1.1.0-rc01 中包含这些提交内容

这是一个稳定版本,与 v1.1.0-beta01 相比,API 没有变化。新增了专为未来的 Android Auto 版本设计的实验性功能(API 级别 4)。如需详细了解实验性 API,请参阅 v1.2.0-alpha01 的版本说明。

版本 1.1.0-beta01

2021 年 9 月 1 日

发布了 androidx.car.app:app-*:1.1.0-beta01版本 1.1.0-beta01 中包含这些提交内容

所有 v1.1.0 功能(API 2 及更高级别)都与 Android Auto 6.7 及更高版本完全兼容。如需了解详情,请参阅开发指南

API 变更

  • 移除了作为公共接口的 Manager (Ie381b)
  • 添加了为权限请求设置自定义品牌背景的功能 (I74b76)
  • 添加了 ScreenManager.getStackSize (I0b16a)
  • 移除了显式获取 TestCarContextScreenController 构造函数 (Iefebc)

bug 修复

  • 添加了创建 CarHardwareManager 时的 API 级别检查 (I48f9b)
  • 添加了针对整个 API 中无效使用 CarSpan 情况的检查 (I65ae6)
  • 修复了以下问题:如果 Screen 在创建过程中被标记为完成,则会导致堆栈的损坏状态 (I81b13)
  • 修复了以下问题:如果 CarAppExtender 中的操作带有图标,CarNotificationManager.notify 会针对 AutomotiveOS 记录错误 (I3633d)
  • 为应用和主机添加了一个握手方法,用于确定 API 版本 (I7d6f8)

版本 1.1.0-alpha02

2021 年 7 月 21 日

发布了 androidx.car.app:app-*:1.1.0-alpha02版本 1.1.0-alpha02 中包含这些提交内容

新功能

  • API 级别 3:添加了 CarHardwareManager,可用于查询车辆的硬件数据,如型号和品牌、油位以及其他传感器数据。目前,在开放式测试渠道中,此功能仅适用于 Android Auto 6.7 及更高版本。如要在桌面环境中测试此功能,您需要使用新版 Desktop Head Unit,该版本将单独发布。敬请关注“测试 Android 车载应用”页面,详细了解该新版本何时发布。
  • 请参阅开发指南和库参考文档,详细了解如何在与 API 级别 3 兼容的汽车主机中使用这些功能以及相关的设计准则。

API 变更

  • SessionControllerScreenController 生命周期方法合并为一个 moveToState 方法 (I1ed00)
  • 添加了 CarContext#getHostInfo() (I8977e)
  • 移除了已废弃的字段。(I67168)
  • 更新了 SessionControllerScreenController,以直接提供构造函数 (Iabf22)
  • 移除了 PinSignInMethod.BuilderProviderSignInMethod.Builder (I9f0cb)
  • 添加了“setCarAppResult()”,以支持在 AAOS 中使用模板化应用“for result”(I37741)
  • 使用 @MainThreadCarHardware 接口进行了注解。(Ib2f85)
  • OnCarDataListener 重命名为 OnCarDataAvailableListener (I518ca)
  • 更新了 CarInfoSpeedMileage 方法名称和 javadoc。(I86672)
  • Toll 已重命名为 TollCard。(I3e7c8)
  • 移除了已废弃的 PinSignInMethod.getPin,取而代之的是 PinSignInMethod.getPinCode (I996ce)
  • 移除了 OnInputCompletedListener,取而代之的是 InputCallback。(Ib5be1)
  • PinSignInMethod 更改为接受 CharSequence(而非 String)(I275d5)

bug 修复

  • 对汽车硬件进行了 Javadoc 修复。(I2abbc)

外部贡献

已知问题

  • SignInTemplate 中,使用 InputSignInMethod 可能会导致汽车主机中出现 NullPointerException。此问题将在下一个版本的库中得到解决。解决此问题的权宜方法是,在应用的 Proguard 配置中添加以下代码行:-keep class androidx.car.app.model.signin.InputSignInMethod { *; }

版本 1.1.0-alpha01

2021 年 6 月 16 日

发布了 androidx.car.app:app:1.1.0-alpha01androidx.car.app:app-automotive:1.1.0-alpha01androidx.car.app:app-testing:1.1.0-alpha01版本 1.1.0-alpha01 中包含这些提交内容

新功能

  • API 级别 2:新增了 SignInTemplateLongMessageTemplate,可用于车辆停好后的登录流程。
  • API 级别 2:NavigationTemplate 内新增了地图互动支持
  • API 级别 2:新增对多长度文本的支持,允许应用提供多个版本的字符串,以根据车载显示屏的尺寸显示相应版本。
  • 请参阅开发指南和库 Javadoc,详细了解如何在与 API 级别 2 兼容的汽车主机中使用这些功能以及相关的设计准则。

API 变更

  • 将所有 *Callback 接口方法设为默认方法,并将 OnRequestPermissionsCallback 重命名为 OnRequestPermissionsListener (Ib3ec9)
  • 更新了 androidx.car.app.hardware 类,以移除不必要的构建器和参数类。(I67beb)
  • 添加了 androidx.car.app.hardware 类,用于访问汽车特有数据,例如燃油、电池和速度。(Iff3c9)
  • 添加了对 MessageTemplateActionStrip 支持 (Ida657)
  • 已将 setLoading 添加到 MessageTemplate 中。(I2a4b5)
  • ConnectionToCar 已重命名为 CarConnection (Ife9bd)
  • 更改了 NavigationTemplate 以返回显式 PanModeDelegate (I13877)
  • 更新了 CarContext.requestPermissions 的参数顺序 (Ib890a)
  • 更新了元数据键,以将最低 Car API 级别定义为 androidx.car.api.minCarApiLevel (Ib0d41)
  • 创建了一个可用于观察汽车连接状态的 API (Ifc935)
  • 添加了对设置 Action 切换开关的支持,并添加了平移模式 Action 类型 (Ica6af)
  • 创建了 CarNotificationManager,以支持在汽车内发送通知 (I10d7a)
  • 添加了 ConstraintManager,用于提供来自主机的列表限制 (I8690e)
  • NavigationTemplate 中添加了平移模式和地图操作栏 API (I77aa6)
  • SurfaceCallback 中为导航应用添加了平移和缩放 API (Id5e9d)
  • CarAppApiLevel 已更新至 2 (Ic1540)
  • 添加了向 CarAppService 请求权限的功能 (I5421e)
  • 为多文本 API 添加了 RequiresCarApi(2) 注解 (Iacb62)
  • 允许在半列表模板标题中使用多个文本变体 (Ib8df7)
  • 添加了新的 LongMessageTemplate(要求 Car API 级别为 2)(Ic5cee)

bug 修复

  • 更新了图片大小要求,以顾及到较大的车载显示屏 (I116dc)
  • 禁止在模板主体中添加 2 个以上操作 (I32157)
  • 已确保汽车应用库中创建的所有 PendingIntent 都设置了标志。(If84feb/186394900
  • 更新了 javadoc,使 Row 的文本可以在刷新时更改 (If3f9c)
  • androidx.activity:activity:1.2.0 现在是 API 依赖项 (Id1cb9)
  • SignInTemplateLongMessageTemplate 设为要求在其主体中包含仅限停车状态下的操作,并更新了文档以指示只能在停车后显示这些操作 (Iddaa9)
  • 修复了启动期间会弹出 Screen 的异常(Ifcf40b/184664896
  • 允许在 ForegroundCarColorSpan 中使用自定义文本颜色 (I69e59)
  • 修复了以下问题:在对 Screen 执行 ON_DESTROY 之后观察到对 Session 执行 ON_DESTROYI52e01b/183696617
  • 更新了 javadoc,说明何时允许将 TravelEstimate 的剩余时间设置为未知时间。(I99610b/183632456
  • 更新了 Action,以支持标题和任何自定义背景颜色中的 ForegroundColorSpan (I578e4)
  • 如果在执行程序执行之前清除了回调,就不会执行 NavigationManagerCallback#onStopNavigationI7fc5eb/181143772
  • 修复了要求应用显式依赖于 lifecycle-common-java8 的问题 (I8b8c8)

已知问题

  • SignInTemplate 中,当用户想要确认输入时,屏幕键盘会显示“搜索”图标而非“输入”图标。作为临时解决方法,用户可以使用手机键盘,该键盘会在输入字段获得焦点时激活。
  • 在 Android Auto 版本 6.5 中,可能会针对某些轻触手势错误地调用 SurfaceCallback 中的平移和缩放回调。

Car App Testing 版本 1.0.0

版本 1.0.0-alpha01

2021 年 3 月 24 日

发布了 androidx.car.app:app-testing:1.0.0-alpha01版本 1.0.0-alpha01 中包含这些提交内容

这是先前关闭的源代码测试库的第一个 Jetpack 版本。如需了解如何在测试中使用此库,请参阅我们的示例

新功能

  • 模型类的控制器已被移除。模型 getter 现在是公共 API 接口的一部分,可用于验证在构建器中设置的值。
  • 之前的 CarAppServiceController 已被新的 SessionController 取代,用于测试与热点的连接的生命周期相关逻辑。

版本 1.0.0

版本 1.0.0

2021 年 4 月 21 日

发布了 androidx.car.app:app:1.0.0版本 1.0.0 中包含这些提交内容。

1.0.0 的主要功能

  • 4 月初,我们宣布开发者可以开始使用 androidx.car.app:app:1.0.0-rc01 将应用发布到正式版发行渠道。汽车应用库 v1.0.0 现为稳定版本,且与 Android Auto 6.1 及更高版本完全兼容。
  • 请参阅开发指南,详细了解如何使用该库为 Android Auto 构建导航、停车和充电应用。

bug 修复

  • 修复了在启动期间弹出 Screen 时会出现的异常(70aae1b/184664896
  • 修复了以下问题:在对 Screen 执行 ON_DESTROY 之后观察到对 Session 执行 ON_DESTROY0ceecbb/183696617

版本 1.0.0-rc01

2021 年 3 月 24 日

发布了 androidx.car.app:app:1.0.0-rc01版本 1.0.0-rc01 中包含这些提交内容

bug 修复

  • 修复了在清除回调后调用 NavigationManagerCallback#onStopNavigation 的竞态条件 bug。如果在回调执行程序实际运行之前清除了回调,就会出现此问题(I7fc5eb/181143772
  • 修复了要求应用显式依赖于 lifecycle-common-java8 的问题 (I8b8c8)
  • 修复了应用在移除回调后收到 stopNavigation 调用时,系统抛出 NullPointerException 的问题(Ib8b89b/181143772
  • 实施了多项改进,确保当应用的生命周期至少不处于 CREATED 状态时,系统将不向应用发送调用(I86965b/179800224b/177921120
  • 修复了由于应用清单中指定的最低 API 无效,导致主机上出现 ANR 的问题。(Iffeddb/174231592

版本 1.0.0-beta01

2021 年 2 月 24 日

发布了 androidx.car.app:app:1.0.0-beta01版本 1.0.0-beta01 中包含这些提交内容

这是先前闭源库的第一个 Jetpack 版本,且与 Android Auto 6.1 或更高版本兼容。请参阅开发指南,详细了解如何使用该库构建汽车应用。

新功能

bug 修复

  • 修复了按顺序弹出屏幕时恢复的 Screen 不正确的问题。(b/177590791)