【问题标题】:How to rebuild development pod changes?如何重建开发 pod 更改?
【发布时间】:2018-11-06 05:50:43
【问题描述】:

我有一个开发 pod,我使用 :path => '~/Projects/Swift/pod' 在本地连接到我的应用程序。当我在该开发 pod 中的应用程序代码中进行更改时,这些更改在构建后不包括在内。就像我正在构建缓存代码,而不是我的代码更改。

为了在构建中包含代码更改,我必须运行命令“清理构建文件夹”,但之后构建需要很长时间,持续 10 分钟,效率不高。

从字面上看,我评论了一行代码,然后等待 10 分钟查看更改。

有什么问题?

我试图在任何更改后运行“pod install/pod update”,但没有任何效果。

【问题讨论】:

  • 这对我来说按预期工作,具有多个应用程序和 Pod。您确定要更改 podspec 的 sources 实际引用的文件吗?
  • @Gereon 是的,我确信我正在更改我的 pod 规范源实际引用的文件
  • 你能在一个新创建的项目中重现这个吗?我还发现了这个旧的 cocoapods 问题:github.com/CocoaPods/CocoaPods/issues/5341 - 你可能使用的是旧的 cocoapads 版本(1.5.x 是当前版本)
  • 在使用 XCode 10 Beta 2 时遇到此问题。过去在 XCode 9 上工作正常
  • 这个问题在 Xcode 10.2.1 中仍然存在

标签: ios xcode cocoapods


【解决方案1】:

Andrés Cecilia Luque 提供的Github issue 提供了一个更清洁的修复程序,它在 Xcode 11.5 上也对我有用。很方便。

【讨论】:

    【解决方案2】:

    我尝试了接受的答案,但没有用,然后我添加了 install! 'cocoapods', :disable_input_output_paths => true 到 podfile,它现在正在工作。

    use_frameworks!
    
    install! 'cocoapods', :disable_input_output_paths => true
    
    target 'TargetName' do
      # ...
    end
    

    【讨论】:

      【解决方案3】:

      下面我习惯了。

      Product -> Schemes -> EditScheme -> Build -> Add a development Pods ("+" sign)
      

      【讨论】:

      • 完美解决方案!
      • 工作正常!比切换到旧版构建系统更好。
      • 我没有看到“添加开发 Pod”。您的意思是选择+ 符号?
      • 是+号。并选择一个 pod。
      • 完美解决方案。我今天学到了一些新东西。谢谢你。
      【解决方案4】:

      作为一种解决方法,我一直在手动“清理”我的开发 pod。

      1. Pods 项目中打开 Products 选择开发 pod 框架
      2. 在右侧的检查器中,我选择打开 Finder 的箭头
      3. 删除框架
      4. 构建/运行

      希望对您有所帮助,并希望 Apple 尽快解决此问题...

      附:肯定会写一个简单的脚本来做到这一点。

      2018 年 9 月 25 日更新

      似乎有时我也必须删除中间版本。

      2019 年 9 月 23 日更新

      看起来它已在 CocoaPods 1.8.0 中修复(哇,已经整整一年了......)

      【讨论】:

      • 您的解决方案非常有效。我只是不明白您所说的“必须删除中间版本”是什么意思。能详细点吗?
      【解决方案5】:

      我还没有一个实用的自动解决方案。但是您可以手动执行CMD + shift + kproduct -> clean build folder

      但是整个项目需要重新构建。如果您有很多 pod/框架或源代码,这可能需要一些时间来重新编译。

      就像其他人提到的那样,这似乎是与新构建系统相关的错误。因此,您可以切换回旧系统。

      两者都不是很好的解决方案。但这就是我们为与苹果合作付出的代价;)。

      【讨论】:

      • @NikKov 完全同意,但您有更好的解决方案吗?我已经提到这两种解决方案都不是很好的解决方案。
      【解决方案6】:

      虽然改回旧版构建系统可行,但在某些大型项目中构建时间可能会增加。另一种解决方案是添加此运行脚本find "${SRCROOT}/Pods" -type f -name *frameworks.sh -exec bash -c "touch \"{}\"" \; 以触及项目的 Build Phases->Embed Pods Framework 下的所有框架脚本。在修复此错误之前,这应该会获取您的新更改。

      【讨论】:

      • 这似乎是最可靠的,因为 Apple 新的构建系统不善于发现变化,例如 Catalyst 不能与旧系统一起工作:(
      • 这个变通方法对我有点用。但是脚本在 pod install 运行时被覆盖
      【解决方案7】:

      我正在使用开发 pod 一段时间,它在大多数情况下都能正常工作。更改不会像您只发生几次那样生效。

      删除Pods 文件夹并重新安装可能会解决问题。


      更新:

      我必须声明我的答案不适用于 Xcode 10 之后的情况。对于 Xcode 10,CocoaPods 目前可能不支持新的构建系统。他们已经修复了它https://github.com/CocoaPods/CocoaPods/issues/8073

      在我的情况下(在 Xcode 10 之前),大部分时间它都运行良好,除了少数。

      【讨论】:

      • 这是完全错误的答案。问题在于新的 Xcode 10 缓存了所有其他目标并且不检测本地 pod 中的代码更改,而不是 Pods 文件夹中的代码更改。 Xcode 9 没有这个问题。
      • @Legoless 也许您此时必须使用 Xcode 10 执行强制清理 github.com/CocoaPods/CocoaPods/issues/8073
      • 是的,这绝对是一个解决方案,但是对于大型项目,这在我的高端 MBP 上需要 10-15 分钟。如果您只是在小调整上进行迭代,您可以想象这是多么浪费时间。
      • @Legoless 是正确的。我已经在 6 月份向 Apple 报告了这个错误,但它仍然被标记为开放。只有干净的构建对我有用(Command+Shift+K 然后 Command+B)。
      【解决方案8】:

      我在使用 Xcode 10.0 (10A255) 时遇到了同样的问题。改回旧版构建系统(在文件 -> 项目/工作区设置中)对我来说暂时解决了这个问题,直到 Cocoapds 或 Xcode 解决了这个问题。

      【讨论】:

      • 是的,这行得通。之后,您可以切换回新的构建系统。
      • 这是迄今为止我在 Xcode 10 中发现的最烦人的错误之一。浪费了很多时间!
      • FWIW 在本地设置路径时,将“构建系统”设置为 legacy 效果很好。甚至pod install 也没有必要。如果您有文件更改,则不需要pod install,只有当您有新文件时才需要它
      猜你喜欢
      • 2019-06-16
      • 2021-11-01
      • 1970-01-01
      • 2017-11-23
      • 1970-01-01
      • 2019-12-20
      • 2019-11-30
      • 1970-01-01
      • 2018-03-31
      相关资源
      最近更新 更多