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

使用两个加密库时出现tink-android模块重复类错误求助

解决tink-android与tink核心库的重复类冲突问题

这个问题的核心是androidx.security:security-crypto-ktx依赖的是tink-android(包含tink核心功能+Android专属实现),而com.google.crypto.tink:apps-paymentmethodtoken默认依赖的是tink核心库,两者包含大量重复类,导致编译冲突。直接排除tink-android会破坏EncryptedSharedPreference的依赖,因为它需要tink-android里的Android密钥存储相关实现。

下面是可行的解决步骤:

  • 统一Tink版本并强制使用tink-android
    tink-android是tink核心库的超集,包含所有核心功能,同时补充了Android平台的适配代码,所以可以让所有依赖都指向tink-android,替换掉单独的tink核心库。

    在Module级别的build.gradle中做如下配置:

    1. 先声明统一的Tink版本(建议用最新稳定版,比如当前的1.12.0):

      ext {
          tinkVersion = "1.12.0"
      }
      
    2. 引入依赖时,给apps-paymentmethodtoken排除自带的tink核心库:

      // EncryptedSharedPreference 依赖
      implementation "androidx.security:security-crypto-ktx:1.1.0-alpha06"
      
      // 支付方法token库,排除自带的tink核心依赖
      implementation("com.google.crypto.tink:apps-paymentmethodtoken:$tinkVersion") {
          exclude group: "com.google.crypto.tink", module: "tink"
      }
      
    3. 强制所有Tink相关依赖使用tink-android:

      configurations.all {
          resolutionStrategy {
              force "com.google.crypto.tink:tink-android:$tinkVersion"
          }
      }
      
  • 验证依赖是否正确
    同步gradle后,执行./gradlew app:dependencies(或在Android Studio的File > Project Structure > Dependencies中查看依赖树),确认所有com.google.crypto.tink相关的依赖只有tink-android,没有单独的tink核心库。

  • 版本兼容性说明
    要确保androidx.security:security-crypto-ktx的版本与指定的tinkVersion兼容,比如1.1.0-alpha06版本的security-crypto-ktx默认依赖的就是tink-android:1.12.0,如果使用旧版security库,需要对应调整tinkVersion到匹配的版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 21:37:07