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

Android SDK集成第三方项目时iso parser依赖异常问题求助

问题

我们的SDK基于com.googlecode.mp4parser:isoparser实现视频压缩功能,在测试项目中运行正常,但将快照版本1.2.19-SNAPSHOT集成到其他项目时,iso parser功能异常——视频压缩后丢失音频。

临时解决方案(非最佳实践)

目前通过手动排除SDK中的isoparser依赖并强制指定版本解决问题,配置如下:

implementation('com.name.lib:Library:1.2.19-SNAPSHOT') {
    exclude group: 'com.googlecode.mp4parser', module: 'isoparser'
}

implementation('com.googlecode.mp4parser:isoparser:1.0.6') {
    force = true
}

建议的ProGuard规则

有人提出通过添加ProGuard规则尝试解决:

-keep class com.googlecode.mp4parser.isoparser.** { *; }

合理解决方案

1. 统一SDK内部的依赖版本管控

在SDK的build.gradle中,明确锁定isoparser的依赖版本,并通过依赖解析策略强制该版本,避免集成项目出现版本冲突:

// SDK的build.gradle
dependencies {
    implementation 'com.googlecode.mp4parser:isoparser:1.0.6'
}

configurations.all {
    resolutionStrategy {
        // 强制所有依赖路径下的isoparser使用指定版本
        force 'com.googlecode.mp4parser:isoparser:1.0.6'
    }
}

这样集成方无需手动排除或强制版本,SDK自身会处理依赖一致性。

2. 配置SDK的消费者混淆规则

如果问题是混淆导致的isoparser类被误删,在SDK的src/main/resources/consumer-rules.pro中添加以下规则,确保集成项目自动应用该混淆规则:

-keep class com.googlecode.mp4parser.** { *; }
-keep interface com.googlecode.mp4parser.** { *; }

相比让集成方手动添加,这种方式更符合SDK封装的最佳实践,避免遗漏配置。

3. 检查快照版本的依赖变更

对比SDK稳定版本与快照版本的依赖配置,确认是否在快照版本中意外修改了isoparser的依赖范围(比如从固定版本改为1.0.+动态版本),导致引入了不兼容的新版本。若存在此类变更,恢复为固定版本即可。

4. 排查集成项目的依赖冲突

让集成方通过以下方式检查依赖树:

./gradlew app:dependencies --configuration debugImplementation

或使用Android Studio的View > Tool Windows > Gradle > 项目名 > Tasks > android > androidDependencies查看是否有其他依赖引入了不同版本的isoparser。若存在冲突,可在SDK侧通过resolutionStrategy统一版本,而非让集成方手动处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 06:13:34