You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Mapbox依赖遇ClassCastException,旧依赖存PendingIntent问题

问题解决:Mapbox依赖与Gradle 8.x/JDK17兼容问题

环境

  • Android OS版本:31
  • JDK:jdk-17
  • AGP:8.0
  • Gradle:8.0.2

核心问题

  1. 升级Mapbox依赖后,编译阶段抛出java.lang.ClassCastException: class com.sun.tools.javac.tree.JCTree$JCIdent cannot be cast to class com.sun.tools.javac.tree.JCTree$JCArrayTypeTree
  2. 保留旧版Mapbox依赖时,Android 31+系统运行触发Telemetry初始化异常:Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent

解决方案

1. 解决编译阶段的ClassCastException

该错误源于Mapbox旧版本注解处理器与JDK17/Gradle 8.x的Java编译API不兼容,按以下步骤处理:

  • 升级Mapbox依赖至10.15.0及以上版本(此版本开始适配JDK17和Gradle 8.x),示例依赖配置:
    dependencies {
        implementation 'com.mapbox.maps:android:10.16.1'
        // 同步升级其他Mapbox组件(如导航)的对应版本
        implementation 'com.mapbox.navigation:core:2.13.1'
    }
    
  • 若升级后仍存在冲突,强制排除旧版注解处理器依赖:
    configurations.all {
        exclude group: 'com.mapbox', module: 'mapbox-annotation-processor'
    }
    

2. 解决Android 31+的PendingIntent异常

旧版Mapbox Telemetry模块未适配Android 12+的PendingIntent flag要求,升级到上述兼容Gradle 8.x的Mapbox版本即可彻底解决——该版本已修复此flag问题。

若因特殊原因无法立即升级,可临时通过以下配置规避(不推荐长期使用):

<application>
    <meta-data
        android:name="mapbox.telemetry.targetSdkVersion"
        android:value="30" />
</application>

验证步骤

  1. 同步Gradle项目,执行./gradlew clean清理构建缓存
  2. 重新编译项目,确认ClassCastException消失
  3. 在Android 31+设备上运行,检查Telemetry初始化异常是否解决

内容的提问来源于stack exchange,提问作者Syed Tayyab Ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 15:47:20