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

如何用Gradle或其他工具修补Android依赖库中的TelemetryUtils类?

修复依赖库单个类的可行方案

步骤1:创建对应包结构并放入修复类

在你的Android项目src/main/java目录下,创建与目标类完全一致的包路径:com/mapbox/services/android/telemetry/utils,将修复好的TelemetryUtils.java文件放入该目录。

核心逻辑是:Android编译时,项目自身源码会优先于依赖库代码被加载,相同全限定名的类,项目内的版本会覆盖依赖库中的原类。

步骤2:配置Gradle确保编译优先级(部分场景需补充)

若出现依赖库类仍被优先加载的情况,在app模块的build.gradle(或build.gradle.kts)中添加配置,明确项目源码的编译优先级:

Groovy语法版本

android {
    sourceSets {
        main {
            java {
                srcDirs = ['src/main/java']
            }
        }
    }
}

Kotlin DSL版本

android {
    sourceSets {
        main {
            java.srcDirs("src/main/java")
        }
    }
}

步骤3:验证修复效果

编译运行应用后,可通过日志确认自定义类已生效,添加如下代码打印类加载路径:

Log.d("TelemetryUtils", TelemetryUtils.class.getProtectionDomain().getCodeSource().getLocation().toString());

若输出路径指向你的APK自身,说明覆盖成功。

注意事项

  • 必须保证修复类的全限定名(包名+类名)与原类完全一致,否则无法实现覆盖。
  • 若项目开启混淆,需在proguard-rules.pro中添加规则避免自定义类被混淆:
-keep class com.mapbox.services.android.telemetry.utils.TelemetryUtils { *; }
  • 后续升级依赖库时,需重新核对该类的代码变动,避免修复失效或出现兼容性问题。

内容的提问来源于stack exchange,提问作者Francisco Vieira

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 11:42:19