本部分包含适用于 Android 的 Consumer SDK 的版本说明。
公告:API 级别 23、24 和 25 的支持已冻结
根据移动操作系统版本支持政策,我们将在即将发布的 Android 版 Consumer SDK 主要版本中冻结对 Android 6 和 7(API 级别 23、24 和 25)的支持。
自 2025 年第 4 季度起发布的 Consumer SDK for Android 版本将至少支持 Android 8(API 级别 26)。较低版本的 SDK 将继续支持 Android 6 和 7。
如果依赖项未指定版本号,IDE 将加载最新的 SDK 版本,并且应用的新 build 将不支持 Android 6 和 7。
在应用的 build 依赖项中指定 Consumer SDK for Android 的版本,以便控制何时提高新版应用的最低支持操作系统版本。
3.0.0(2024 年 12 月 6 日)
依赖项和配置变更
- 从 Android 版 Consumer SDK 3.0.0 开始,应用必须升级到 Kotlin 2.0。请参阅 Android 消费者 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! This is a 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。
问题
- 如果在 API 实例已存在时调用
ConsumerApi.initialize()
,则会抛出异常。如需解决此问题,请先调用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 的应用必须启用脱糖功能。有关说明,请参阅 https://developer.android.com/studio/write/java8-support#library-desugaring。
现在,如果在已创建 API 实例时调用
ConsumerApi.initialize()
方法,该方法会抛出异常。必须使用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 渲染程序。如需了解详情,请参阅新版地图渲染程序。
提供 Maps SDK 范围支持,从 v18.1.0(包括)到 v19.0.0(不包括)版本。
修复了 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 应用中运行的消费者 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
,这两个 API 都与 Maps SDK 共享。
崩溃监控
添加了崩溃检测和日志记录。
- 我们添加了一项功能,让您可以停用此功能。这是我们在全球范围内进行的更大规模崩溃监控工作的一部分。
身份验证更改
- 从身份验证接口中移除不必要的方法。
- 移除了
ServiceType
参数。
- 移除了
v0.9.28(2021 年 5 月 18 日)
API 变更
- 更新了所有
ConsumerTripCallback
方法,以使用TripInfo
作为参数。 - 添加了
ConsumerTrip.isRefreshing()
,用于指示ConsumerTrip
是否正在使用来自车队引擎的新行程信息主动更新自身。 - 添加了
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
副本。 - 修复了某些设备上交通多段线闪烁的问题。流量细分现在将采用圆角。
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,它会尝试从 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 的消费者 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()
,而不是等待所监控行程的状态。始终返回首次更新行程数据时的数据,即使行程数据未同步也是如此。
将 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 上注册的监听器调用行程回调。
相机缩放功能现在仅包含有效路线和下一个行程航点(属于行程的航点)。即使剩余的腿部也处于可见状态,缩放功能也不会将其包含在内。以前,当车辆在前往上车点途中或已到达上车点时,下车点会包含在缩放范围内。这已不再正确。
改进
使用 Driver 数据填充第零个剩余航点(剩余航点列表由
ConsumerTripCallback.onTripRemainingWaypointsUpdated
和TripInfo.getRemainingWaypoints()
返回)。当列表中第一个航点的预计到达时间发生变化时,更新所有其余航点的预计到达时间。
仅在司机到达上车点时强制重新启用自动相机。以前,每当行程状态发生变化时,autocamera 都会重置为启用。自动相机功能默认仍处于启用状态。如果未调用新的
startTripMonitoring()
调用,则系统不会重新启用 Autocamera。
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
。