【问题标题】:What can break an android build without code changes?什么可以在不更改代码的情况下破坏 android 构建?
【发布时间】:2019-06-18 13:15:28
【问题描述】:

我正在开发一个使用react-native-firebasereact-native 应用程序。我已经在 travis 上设置了一个 CI 构建,目的是获得可重现的构建,但它突然停止工作,详情如下:

  • before: 4 天前,构建工作
  • after:今天,完全相同的构建被破坏,失败并显示以下消息:

Android 依赖 'com.google.android.gms:play-services-base' 对于编译 (16.0.1) 和运行时 (17.0.0) 类路径有不同的版本。您应该通过 DependencyResolution 手动设置相同的版本

我唯一合理的猜测是某些依赖项发生了变化,但我对 android 构建的理解不够好,无法弄清楚发生了什么或为什么。

很明显,我该如何防止此类意外发生在未来? (在我看来,这个构建应该是完全可重复的)

附带说明,当构建失败时,它还会显示几个警告,例如:

警告:与项目 ':app' 中的依赖项 'com.google.android.gms:play-services-base' 冲突。运行时类路径 (17.0.0) 和编译类路径 (16.0.1) 的已解决版本不同。这可能导致运行时崩溃。要解决此问题,请遵循https://developer.android.com/studio/build/gradle-tips#configure-project-wide-properties 的建议。或者,您可以尝试通过将此 sn-p 添加到 /home/travis/build/mapswipe/mapswipe/android/app/build.gradle 来解决问题: 依赖{ 实施(“com.google.android.gms:play-services-base:17.0.0”) }

但遵循该建议只会导致更多(不同)错误。

【问题讨论】:

标签: java android react-native google-play-services


【解决方案1】:

根本原因是相关迁移到Androidx,google play服务更新到androidX

如果您使用的是real-native-info,请升级。 2.1.2

将解决您的问题

here apply link

注意:升级com.google.android.gms 到 17.0.0 会导致很多 问题。

【讨论】:

  • 答案详情在这条评论里:github.com/facebook/react-native/issues/…谢谢你让我走上正轨!
  • @LaurentS 自从 Google 更新以来,似乎很多人都遇到了这个问题。如果有帮助,您能选择我的答案吗?
  • 是的,接受您的回答,因为它帮助我解决了我的问题。我写了另一个答案,只是为了记录,它实际上解决了我的具体问题。
【解决方案2】:

作为参考,this comment on github 提供了我的问题的答案:

一个依赖项(在我的例子中是react-native-device-info)正在使用其依赖项之一的最新版本,而不是固定/固定版本。当新版本的 google 服务发布时,它会导致构建拉入 device-info 的新版本,从而导致与正确固定所需版本的其他依赖项发生冲突。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-08
    • 2021-10-17
    • 2010-12-21
    • 2017-12-17
    • 1970-01-01
    • 2011-03-11
    • 2013-07-19
    • 2019-02-28
    相关资源
    最近更新 更多