本部分包含 Consumer SDK for Android 的版本说明。
公告:冻结对 API 级别 23、24 和 25 的支持
根据移动操作系统版本支持政策,我们将在即将发布的主要版本的 Consumer SDK for Android 中冻结对 Android 6 和 7(API 级别 23、24 和 25)的支持。
自 2025 年第四季度起发布的 Android 版 Consumer SDK 版本将支持最低 Android 8(API 级别 26)。较早的 SDK 版本将继续支持 Android 6 和 7。
如果您的依赖项未指定版本号,IDE 将加载最新的 SDK 版本,并且您应用的新 build 将不支持 Android 6 和 7。
在应用的 build 依赖项中指定 Consumer SDK for Android 的版本,以便控制何时提高新版应用的最低支持操作系统。
3.2.0(2025 年 6 月 26 日)
- 改进了内部日志记录。
依赖项和配置变更
- 从 Consumer SDK for Android 3.2.0 版开始,应用必须升级到 Kotlin 2.1。
问题修复
- 使用折线长度代替直线距离来做出内部动画决策。
3.1.0(2025 年 3 月 10 日)
- 改进了内部日志记录。
3.0.0(2024 年 12 月 6 日)
依赖项和配置变更
- 从 Consumer SDK for Android 3.0.0 版开始,应用必须升级到 Kotlin 2.0。请参阅 Android Consumer SDK 3.0 迁移指南。
- Consumer SDK 的 targetSdk 现在为 Android 14(API 级别 34)。这是自 2024 年 8 月起部署到 Google Play 商店的所有应用都必须满足的要求。 请参阅满足 Google Play 的目标 API 级别要求。
2.99.0(2024 年 11 月 25 日)
问题修复
- 修复了
ConsumerApi.cleanUp()
执行时间过长时发生的 ANR 错误。集成版本发布后,此功能将逐步推出(从 0% 开始)。 - 修复了驱动程序收到代码为“INTERNAL”且消息为“Panic! 这是一个 bug!集成版本发布后,此功能将逐步推出(从 0% 开始)。
2.3.0(2024 年 8 月 2 日)
API 变更
添加了云端地图样式设置支持,可让您为用户打造定制化的路线图体验,而无需在每次更改地图样式时更新应用的代码。如需了解详情,请参阅使用云端地图样式设置来设置地图样式。
向
VehicleLocation
添加了getServerTimeMillis()
方法,以确定 Fleet Engine 接收位置信息更新的时间。
2.2.0(2024 年 5 月 7 日)
API 变更
- 添加了对 Jetpack Compose 集成的支持 API。这是一项实验性功能。如需详细了解如何与 Jetpack Compose 集成,请与您的代表联系。
2.1.0(2024 年 1 月 17 日)
问题修复
- 修复了在应用生命周期内多次初始化 SDK 时发生的崩溃。
API 变更
- 引入了用于检索 SDK 创建的
GoogleMap
实例的方法 (ConsumerGoogleMap.getGoogleMap()
)。 - 引入了用于检索 SDK 创建的
Marker
实例以表示车辆 (ConsumerController.getConsumerMarker()
) 的 API。 - 引入了 API,用于在行程分享期间 (
ProjectedRouteEta
) 接收客户端预测的时间和距离更新。
1.99.2(2023 年 11 月 3 日)
修复了从与应用分离的远程进程初始化 SDK 时发生的崩溃。
修复了在执行相机动画时,如果垂直或水平空间不足以容纳内边距,则会发生的崩溃。这种情况仅在最新的地图渲染器上发生。
修复了以下 bug:当连续行程的第二段经过同一条道路时,第一段行程会被截断。
问题
- 如果调用
ConsumerApi.initialize()
时 API 实例已存在,则会抛出异常。为了解决此问题,请先调用ConsumerApi.getInstance()
并评估返回的Task
以确定 API 实例是否已存在。
2.0.0(2023 年 9 月 15 日)
公告:重大变更
最低 API 级别要求已从 21 更新为 23。
将 Maps SDK 版本要求从 v17.0.0 更新为 v18.1.0
将最低 Kotlin 标准库版本要求从 v1.6.10 更新为 v1.9.0
更新 Google Play 服务依赖项版本
将 play-services-base 库的最低版本要求从 v18.0.1 更新到了 v18.2.0
将 play-services-basement 库的最低版本要求从 v18.0.0 更新为 v18.2.0
将 play-services-location 库的最低版本要求从 v17.0.0 更新到了 v21.0.1
将 play-services-tasks 库的最低版本要求从 v18.0.1 更新为 v18.0.2
添加了 androidx.room:room-runtime 库,并将最低版本要求设置为 v2.5.2
更新以下依赖项版本
将 android-maps-utils 库的最低版本要求从 v0.4.2 更新为 v3.5.2
将 com.google.android.datatransport:transport-backend-cct 的最低版本要求从 v3.0.0 更新为 v3.1.9
将最低 com.google.android.datatransport:transport-runtime 版本要求从 v3.0.1 更新为 v3.1.9
将 androidx.lifecycle:lifecycle-extensions 的最低版本要求从 v2.0.0 更新为 v2.2.0
将 androidx.lifecycle:lifecycle-common-java8 的最低版本要求从 v2.0.0 更新为 v2.6.1
将 androidx.appcompat:appcompat 的最低版本要求从 v1.0.0 更新为 v1.6.1
将 androidx.fragment:fragment 的最低版本要求从 v1.0.0 更新为 v1.6.1
移除了以下之前已弃用的 API:
ConsumerTrip
、ConsumerTripCallback
、ConsumerTripManager
、ConsumerTripOptions
。它们已替换为TripModel
、TripModelCallback
、TripModelManager
和TripModelOptions
。使用 Consumer SDK 的应用现在必须具有 API 级别 31 或更高级别的
targetSdkVersion
,以及 API 级别 33 或更高级别的compileSdkVersion
。使用 Consumer SDK 的应用现在必须启用 Java 8 库支持。如需了解更新说明,请参阅 https://developer.android.com/studio/write/java8-support。
使用 Proguard 或 Dexguard 的应用必须迁移到 R8。如需了解详情,请参阅 https://developer.android.com/build/shrink-code。
使用 Consumer SDK 的应用必须启用 desugaring。 有关说明,请参阅 https://developer.android.com/studio/write/java8-support#library-desugaring。
如果
ConsumerApi.initialize()
方法在已创建 API 实例时被调用,现在会抛出异常。ConsumerApi.getInstance()
返回的Task
必须用于确定之前是否已创建 API 实例。
公告:API 弃用
弃用了
Trip.TripStatus
和Trip.TripType
注解类,并添加了TripInfo.TripStatus
和TripInfo.TripType
注解类来替换它们。在此次变更中,我们弃用了
TripModelCallback#onTripStatusUpdated(TripInfo tripInfo, @Trip.TripStatus int status)
,并添加了TripModelCallback#onTripStatusUpdate(TripInfo tripInfo, @TripInfo.TripStatus int status)
来取代它。在此次变更中,我们弃用了
TripInfo#getTripStatus()
,并添加了TripInfo#getCurrentTripStatus()
来取代它。在此次变更中,我们弃用了
TripInfo#getTripType()
,并添加了TripInfo#getCurrentTripType()
来取代它。
弃用了
Trip
类。
其他变更和 bug 修复
支持请求最新的 Maps SDK 渲染器。如需了解详情,请参阅新版地图渲染程序。
提供从 v18.1.0(含)到 v19.0.0(不含)版本的 Maps SDK 范围支持。
修复了 SDK 与 Google 后端之间内部通信的“超出截止期限”错误。
修复了小尺寸屏幕和画中画模式下的渲染问题。
迁移指南
1.99.1(2023 年 8 月 31 日)
问题修复
修复了 SDK 宿主 activity 或 fragment 被销毁时发生的崩溃。
修复了当 MapView 的维度(高度或宽度)为 0 时发生的崩溃。
修复了在路线折线上投影车辆位置时发生的崩溃。
改进
- 防止在宿主应用旁加载且缺少默认视觉资源时,SDK 发生崩溃。
1.99.0(2023 年 6 月 22 日)
问题修复
修复了小尺寸屏幕和画中画模式下的渲染问题。
修复了在分享行程期间车辆闪烁的问题。
1.2.1(2023 年 6 月 7 日)
问题修复
- 修复了在分享行程期间导致车辆闪烁的 bug。
1.2.0(2022 年 11 月 21 日)
问题修复
- 修复了导致在
onTripActiveRouteTrafficUpdated
回调中报告空流量的 bug。
新功能
- “支持考虑路况的多段线”现已正式发布。
1.1.2(2022 年 10 月 27 日)
问题修复
- 修复了以下 bug:针对
TripModel
多次启动JourneySharingSession
后,导致路线折线消失。
公告:冻结对 Android 5 的支持(2022 年 7 月 25 日)
对于 v1.1.1 版 SDK,我们将为在 Android 5 上运行的应用(包括 API 级别 21 和 22)额外提供一年的支持。
这意味着:
在 2023 年 6 月 30 日之前,在 Android 应用上运行的 Consumer SDK 将支持最低 Android 5(API 级别 21)。
2023 年 6 月 30 日之后,我们将仅支持 Android API 级别 23 及更高版本。 换句话说,自该日期起,我们将停止在所有 SDK 版本中支持 Android API 级别 21 和 22。这意味着,任何 SDK 版本(包括 4.x)中与 Android 21 或 22 相关的 bug 都不会得到修复,并且我们不保证这些 SDK 能正常运行。
v1.1.1(2022 年 7 月 25 日)
依赖项变更
- 将支持的最低 Android API 级别降至 21。
v1.1.0(2022 年 4 月 28 日)
- 内部改进。
v1.0.19(2022 年 3 月 17 日)
问题修复
- 修复了
ConsumerApi
类中的内存泄漏问题。
v1.0.14(2021 年 11 月 30 日)
现在,支持的最低 Android API 级别为 23。
API 变更
对
ConsumerTrip
和ConsumerTripManager
类进行了更改。- 清理了一些方法名称,使其含义更清晰,并与 iOS 平台保持一致。
对
ConsumerTripCallback
、ConsumerTrip
和TripInfo
的更改。更改了一些类名称,以与 iOS 保持一致。引入了
TripModel
、TirpModelManager
和TripModelOptions
,以弃用ConsumerTrip
、ConsumerTripManager
和ConsumerTripOptions
。清理了一些方法名称。修订或添加了方法的 JavaDoc 注释,以传达更清晰的含义。
改进了错误处理。
样式自定义
已弃用的旧版封装容器
MarkerStyleOptions
和PolylineStyleOptions
已被弃用,并替换为MarkerOptions
和PolylineOptions
,这两者均与 Maps SDK 共享。
崩溃监控
添加了崩溃检测和日志记录。
- 我们添加了一项功能,让您可以选择停用此功能。这是我们为实现地理位置范围更广的崩溃监控而采取的一项举措。
身份验证更改
- 从身份验证接口中移除了不必要的方法。
- 移除了
ServiceType
参数。
- 移除了
v0.9.28(2021 年 5 月 18 日)
API 变更
- 更新了所有
ConsumerTripCallback
方法,以使用TripInfo
作为参数。 - 添加了
ConsumerTrip.isRefreshing()
,用于指示ConsumerTrip
是否正在使用来自 Fleet Engine 的最新行程信息主动更新自身。 - 添加了
ConsumerTripCallback.onTripRemainingRouteDistanceUpdated()
。 - 添加了
ConsumerTripCallback.onTripRemainingRouteUpdated()
。 - 将 Guava 返回值类型(
ImmutableSet
、ImmutableList
)替换为java.util
等效类。 软件包名称变更:
- com.google.android.libraries.ridesharing.common.AuthTokenContext -> com.google.android.libraries.ridesharing.consumer.auth.AuthTokenContext
- com.google.android.libraries.ridesharing.common.AuthTokenFactory -> com.google.android.libraries.ridesharing.consumer.auth.AuthTokenFactory
com.google.android.libraries.ridesharing.common.FleetEngineServiceType -> com.google.android.libraries.ridesharing.consumer.auth.FleetEngineServiceType - com.google.android.libraries.ridesharing.common.model.Trip
-> com.google.android.libraries.ridesharing.consumer.model.Trip - com.google.android.libraries.ridesharing.common.model.Vehicle -> com.google.android.libraries.ridesharing.consumer.model.Vehicle
实现变更
- 修复了以下竞态条件:SDK 在准备就绪之前与地图互动时可能会崩溃。
- SDK 不再包含未混淆的
io.grpc
副本。 - 修复了某些设备上交通多段线闪烁的 bug。流量路段现在将具有圆角端点。
v0.9.15(2020 年 10 月 7 日)
API 变更
- 此版本引入了考虑路况的多段线。
- 添加了
TripInfo.getActiveRouteTraffic()
和TripInfo.getRemainingRouteTraffic()
。- 添加了
ConsumerTripCallback.onTripActiveRouteTrafficUpdated()
和ConsumerTripCallback.onTripRemainingRouteTrafficUpdated()
,用于指示流量何时发生变化。 - 添加了
PolylineStyleOptions
以实现流量自定义(setTrafficEnabled()
、setTrafficColorNoData()
、setTrafficColorNormal()
、setTrafficColorSlow()
、setTrafficColorTrafficJam()
)。 - 公开了
PolylineStyleOptions.TRAFFIC_Z_INDEX_ADDITION
。 - 添加了
TripWaypoint.getTrafficData()
。 - 添加了
TrafficData
数据类型。 - 添加了
ConsumerController.hideAllSessions()
。ConsumerController.showSession()
不再接受 null 作为实参。
- 添加了
v0.9.9(2020 年 7 月 15 日)
API 变更
- 这是一项重大变更,引入了模块化架构,使仅包含数据的层(例如
ConsumerTripManager
)与用户界面层(例如JourneySharingSession
)之间的关系更加清晰。如需了解如何迁移到新架构,请参阅模块化迁移指南。 - 现在,ConsumerTrip
对象是从ConsumerTripManager.getTrip()
中获取的。ConsumerTrip.unregisterCallback
已重命名为ConsumerTrip.unregisterTripCallback
。ConsumerTrip.isCallbackRegistered
已重命名为ConsumerTrip.isTripCallbackRegistered
。- 添加了
ConsumerTrip.setConsumerTripOptions()
和ConsumerTrip.getConsumerTripOptions()
。 - 移除了
ConsumerTrip.setAutoRefreshInterval()
。
- 移除了非行程分享 API。
- 移除了车辆密度地图。
- 移除了行程预览状态。
- 移除了自提选择状态。
- 移除了下车选择状态。
- 移除了以下标记类型:
SELECTED_PICKUP_POINT
、SUGGESTED_PICKUP_POINT
、HIGHLIGHTED_PICKUP_POINT
和SELECTED_DROPOFF_POINT
。
- 将
OnConsumerMarkerClickCallback
和ConsumerMapReadyCallback
从接口更改为抽象类。 - 添加了
ConsumerController.getCameraUpdate()
、ConsumerController.isAutoCameraEnabled()
和ConsumerController.enableAutoCamera()
。 - 移除了自定义 FAB 及其关联的方法(
ConsumerController.isMyLocationFabEnabled
和ConsumerController.setMyLocationFabEnabled
)。
实现变更
- 无论是否已向
LifecycleOwner
注册,ConsumerTripCallback
在TripStatus.COMPLETE
或TripStatus.CANCELED
上都不再自动取消注册。 - AutoCamera 现已默认处于启用状态,并且不会自行重新启用或停用。
之前,在旅程分享期间,当用户与地图互动时,AutoCamera 会在
TripStatus.ARRIVED_AT_PICKUP
上自动重新启用,并在用户与地图互动时自行停用。 - 我们对行程分享车辆动画进行了以下改进:
- 行程分享动画现在可以处理车辆可能合法地沿已走过的路线返回的情况。
- 现在,当算法确定合适时,车辆将进行直线动画,而不是在各点之间进行路线插值。
- 不再需要
FINE_LOCATION
权限。
其他更改
- 更新了以下依赖项版本:
- com.google.android.datatransport:transport-api:2.2.0
- com.google.android.datatransport:transport-backend-cct:2.2.0
- com.google.android.datatransport:transport-runtime:2.2.0
v0.9.1(2020 年 3 月 23 日)
API 变更
- 添加了
TripInfo.getVehicleId()
、TripInfo.getNumberOfPassengers()
、TripInfo.getIntermediateDestinationIndex()
、TripInfo.getTripActiveRoute()
和TripInfo.getTripRemainingRoute()
。 - 添加了在
ConsumerApi
初始化期间使用的options
类,该类允许动态设置FleetEngine
地址。如果未通过FleetEngine
值调用该 API,则该 API 会尝试从 Android 清单中提取该值,否则会回退到默认值。
改进
- 当行程状态为
ARRIVED_AT_PICKUP
时,系统不会显示路线折线。 - 改进了偏离路线的车辆跟踪功能(需要 DriverSDK 1.15):
- 当车辆驶过上车点时,车辆跟踪功能不会将车辆贴合到路线。
- 车辆跟踪功能可显示车辆在非道路区域的位置,例如在未纳入地图的停车场中的位置。
- 现在,当司机的目的地与 Fleet Engine 中的目的地不一致时,车辆图标会更新。
v0.8.6(2019 年 12 月 16 日)
API 变更
添加了
TripInfo.getVehicleLocation()
。ConsumerMapView
不再是最终版本。
实现变更
- 现在,系统会使用服务器距离(驾驶员报告的距离 + 静态路线,如适用)而非本地贴合来计算剩余的有效路段距离。此变更可生成更准确的剩余距离值。
其他更改
需要新的依赖项。如需了解详情,请参阅 .pom 文件。
- com.google.android.datatransport:transport-api:2.0.0
- com.google.android.datatransport:transport-backend-cct:2.0.2
- com.google.android.datatransport:transport-runtime:2.0.0
添加了行程请求延迟时间的日志。
添加了行程响应错误的日志。
备注
- 自 0.8.1 版起,面向 Android 的 Consumer SDK 以 Jetified ZIP 归档的形式提供。如需了解如何对其进行反 Jetify 处理,请参阅 Jetifier:反向模式。
v0.8.1(2019 年 9 月 13 日)
新功能
支持 ConsumerMapView。
ODRD 制品现在以 Maven 代码库的形式提供,而不是以 .aar zip 文件的形式提供。如需了解详情,请参阅将 Consumer SDK 添加到应用。
API 变更
添加了
ConsumerController.disableAutoCamera()
作为centerMapForState()
的反向函数。VehicleLocation.getUpdateTime()
现在会返回表示时间戳(以毫秒为单位)的 Long。简化了
AuthTokenFactory
接口,以公开用于生成令牌的单一方法。将AuthTokenFactory
从接口更改为抽象类,以在 Java7 中实现向后兼容性。此变更可向后兼容,但用于生成单个服务令牌的旧方法已弃用,最终会被移除。
实现变更
素材资源现在居中放置在图标中心,消除了阴影偏移。
setState
到JOURNEY_SHARING onStartTripMonitoring()
,而不是等待受监控的 Trip 的状态。始终返回首次行程数据更新的数据,即使行程数据处于不同步状态也是如此。
添加了 Android Map Utils 作为提供的依赖项。
问题修复
- 修复了 grpc keep 的 ProGuard 导出语法损坏问题。
v0.7.0(2019 年 8 月 7 日)
新功能
- 为“行程分享”功能添加了多目的地支持。
API 变更
针对
ConsumerTripCallback
的新方法。onTripIntermediateDestinationsUpdated()
。onTripETAToNextTripWaypointUpdated()
。
新增了
ConsumerController
方法。getIntermediateDestinations()
。setIntermediateDestinations(List<TerminalLocation> intermediateDestinations)
。
新
TripStatuses
。TripStatus.ENROUTE_TO_INTERMEDIATE_DESTINATION
。TripStatus.ARRIVED_AT_INTERMEDIATE_DESTINATION
。
新增了
TripWaypoint
getter。getETAMillis()
。getDistanceMeters()
。
添加了
TripInfo
类。- 您可以使用
ConsumerTripManager.getActiveTripInfo()
获取有效行程的TripInfo
。
- 您可以使用
添加了
WaypointType.INTERMEDIATE_DESTINATION
。添加了
MarkerType.TRIP_INTERMEDIATE_DESTINATION
。通过合并
ConsumerMapStates
、ENROUTE_TO_PICKUP
、ARRIVED_AT_PICKUP
、ENROUTE_TO_DROPOFF
和COMPLETE
创建了ConsumerMapState.JOURNEY_SHARING
。“
StateChangeCallbacks
”已更新。添加了
onStateJourneySharing()
。移除了
onStateWaitingForPickup()
、onStateDriverArrived()
、onStateEnroute()
和onStateEndofTrip()
。
问题修复
修复了以下 bug:当行程监控在有效行程的中间(而非路线的开头)开始时,路线不会修剪到车辆位置。
修复了以下 bug:在 TripManager 已提取行程数据后,为在 TripManager 上注册的监听器调用行程回调失败。
相机缩放现在仅包含有效路线和下一次行程的途经点(属于行程的途经点)。即使剩余航段可见,缩放也绝不会包含该航段。之前,当车辆正在前往上车地点或已到达上车地点时,下车地点会包含在缩放范围内。现在,情况不再如此。
改进
使用司机数据填充第 0 个剩余途经点(剩余途经点列表是从
ConsumerTripCallback.onTripRemainingWaypointsUpdated
和TripInfo.getRemainingWaypoints()
返回的)。当列表中第一个途经点的 ETA 发生变化时,更新所有剩余途经点的 ETA。
仅当司机到达上车地点时,才强制重新启用自动摄像头。之前,自动相机会在每次行程状态发生变化时重置为启用状态。自动摄像头功能仍默认处于启用状态。如果没有对
startTripMonitoring()
进行新的调用,则在设置新的有效行程后,自动相机不会重新启用。
v0.6.1(2019 年 6 月 26 日)
新功能
- 为行程分享功能提供拼车支持。
API 变更
ConsumerController.getConsumerMapStyle()
现在返回ConsumerMapStyle
,而不是Task<ConsumerMapStyle>
。添加了
PolylineStyle.setZIndex()
。
问题修复
现在,只有在路线段同步时才会显示路线动画,从而提升用户体验。
修正了在动画插值期间,当驾驶员位置更新间隔较短时车辆“闪烁”的问题。
修复了以下 bug:当在有效行程中途开始行程监控时,车辆会从路线的起点开始,而不是从其最新位置开始。
当有效路线与剩余路线重叠时,在剩余路线上方显示有效路线的折线。
改进
- 现在,公开具有未混淆方法的 gRPC
Status
类。
v0.5.1.01(2019 年 5 月 17 日)
新功能
- 为行程分享提供连续支持。
API 变更
- 新的
ConsumerController
类。
PolylineType
旧值 | 新值 |
---|---|
TRIP_PREVIEW_AUTO_ROUTE |
PREVIEW_AUTO_ROUTE |
TRIP_PREVIEW_TAXI_ROUTE |
PREVIEW_TAXI_ROUTE |
TRIP_PREVIEW_TRUCK_ROUTE |
PREVIEW_TRUCK_ROUTE |
TRIP_PREVIEW_TWO_WHEELER_ROUTE |
PREVIEW_TWO_WHEELER_ROUTE |
TRIP_ROUTE |
ACTIVE_ROUTE |
REMAINING_ROUTE |
ConsumerTripCallback
旧值 | 新值 |
---|---|
onTripRouteUpdated |
onTripActiveRouteUpdated |
onTripRemainingDistanceUpdated |
onTripActiveRouteRemainingDistanceUpdated |
onTripRemainingWaypointsUpdated() |
ConsumerController
- 您现在可以为不进入的状态设置回调。
方法 | 回拨电话 |
---|---|
startPickupSelection |
setPickupSelectionCallback |
startDropoffSelection |
setDropoffSelectionCallback |
startTripPreview |
setTripPreviewSelectionCallback |
- 借助
ConsumerController.setLanguage(String languageCode)
,您可以设置 FleetEngine 调用中使用的语言(例如,用于取货点说明)。
改进
- 现在,在选择下车点后,系统会显示一个可拖动的图钉。
- 移除了
INITIALIZE
状态下的相机动画。 - 已将
ManagedChannelBuilder
替换为AndroidChannelBuilder
。