【问题标题】:Is it possible to use a library built with kotlin 1.3.x in a project using kotlin 1.4.x?是否可以在使用 kotlin 1.4.x 的项目中使用使用 kotlin 1.3.x 构建的库?
【发布时间】:2021-04-21 21:47:53
【问题描述】:

我有一个使用 kotlin 1.4.21 的项目,我需要保留这个版本,因为我也在使用从 kotlin 开始工作的 kotlinx-serialization 1.4.x 。我还有另一个使用 kotlin 1.3.x 构建的库,有没有办法在同一个项目中使用这两个库?目前我收到构建错误,表明它无法使用旧的 kotlin 版本从库中找到类。

无法访问“com.xx.xxx.xxx”的超类型“com.xxx.xxx”。检查您的模块类路径是否存在缺失或冲突的依赖项

【问题讨论】:

  • 这取决于库是如何构建的(以及它的依赖项是如何交付的),但基本上它现在应该可以工作,无论使用什么 kotlin 版本来构建它。尝试确保您正确添加了依赖项
  • 感谢您的回答。该库是通过使用 jfrog 的私有工件分发的。我确信我正在正确添加依赖项,因为当我将项目版本切换为使用 kotlin 1.3.x 时错误消失了
  • 不幸的是,我不知道 jFrog,但据我所知,Gradle 在 jar 打包期间应该将所有内容放入 jar 中,并且由于它已编译,因此无论您是否使用较新的 Kotlin 都无关紧要。我建议附加特定类的完整错误,至少与 gradle.build 的依赖关系行 - 也许同时不推荐使用某些东西,有人将能够识别并帮助解决这个问题

标签: android kotlin gradle


【解决方案1】:

这是由于上述库(使用 kotlin 1.3.x)中的一个 proguard 问题导致的,该问题仅导致使用 kotlin 1.4.x 的项目出现构建错误。在使用 kotlin 1.3.x 的项目中,它只是一个构建警告,不会阻止运行或发布项目。

【讨论】:

    【解决方案2】:

    -api-version=1.3 作为测试传递给 Kotlin 编译器。这将使您的代码与 1.3 标准库兼容,您可以使用它来测试您尝试导入的 1.3 依赖项的完整性。

    如果编译器仍然失败并出现同样的错误,那么您将需要使用 1.4 构建 1.3 库并将其作为新版本部署到 Artifactory。

    更多信息请参见Kotlin compatibility modes

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-18
      • 2017-12-18
      • 2015-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多