You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Android依赖冲突求助:引入security-crypto后出现protobuf重复类

解决SharedPreferences加密依赖引发的Protobuf重复类冲突问题

你遇到的是Android开发中很常见的依赖冲突问题——当你引入androidx.security:security-crypto:1.0.0-rc01后,这个库依赖了com.google.protobuf:protobuf-javalite:3.11.1,而你的项目里Firebase相关的依赖(比如com.google.firebase:protolite-well-known-types:17.0.0)也包含了相同的Protobuf核心类,打包时就会出现重复类的错误。

下面给你几个可行的解决思路:

  • 方法一:排除security-crypto中的冲突依赖
    直接在引入security-crypto时,排除掉它携带的protobuf-javalite库,因为Firebase的protolite已经提供了这些类,不会影响功能。修改你的依赖配置为:

    implementation ('androidx.security:security-crypto:1.0.0-rc01') {
        exclude group: 'com.google.protobuf', module: 'protobuf-javalite'
    }
    
  • 方法二:强制统一Protobuf版本
    如果排除依赖后出现类找不到的情况,可以通过Gradle的resolutionStrategy强制指定一个统一的Protobuf版本,让所有依赖都使用这个版本,避免冲突。在你的android代码块中添加:

    android {
        // ... 保留你原有的其他配置
        configurations.all {
            resolutionStrategy {
                // 强制使用security-crypto依赖的版本
                force 'com.google.protobuf:protobuf-javalite:3.11.1'
                // 或者你也可以尝试对齐Firebase的版本,不过需要确认兼容性:
                // force 'com.google.firebase:protolite-well-known-types:17.0.0'
            }
        }
    }
    
  • 方法三:升级security-crypto到更稳定的版本
    你当前使用的是1.0.0-rc01的候选版本,属于早期版本,可能存在依赖兼容性问题。尝试升级到更新的稳定版本,比如1.1.0-alpha03或更高(可以根据Android Studio的提示选择最新兼容版本),新版本通常会优化依赖管理,减少冲突概率:

    implementation 'androidx.security:security-crypto:1.1.0-alpha03'
    

修改完成后,点击Android Studio右上角的Sync Now同步项目,然后尝试Build。如果还是有冲突,可以在终端执行./gradlew app:dependencies(Windows系统用gradlew.bat app:dependencies)查看完整的依赖树,定位具体的冲突来源,再针对性调整。

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

火山引擎 最新活动