如何重建开发吊舱变更?


67

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

对于将代码更改到构建中,我必须运行命令“ Clean Build Folder”,但是在此之后,构建将花费很长时间,即10分钟,这不是很有效。

从字面上看,我对一行代码进行注释,然后等待10分钟以查看更改。

问题是什么?

进行任何更改后,我都试图运行“ pod安装/ pod更新”,但这没有任何效果。


这对我来说很有效,可以使用多个应用程序和Pod。您确定要更改podspec的实际引用的文件sources吗?
Gereon

@Gereon是的,我确定我正在更改播客规范来源中实际引用的文件
Gikas,

您可以在新创建的项目中重现吗?我还发现了这个旧的cocoapods问题:github.com/CocoaPods/CocoaPods/issues/5341-您是否正在使用旧的cocoapads版本(当前版本为1.5.x)
Gereon,

3
使用XCode 10 Beta 2时遇到了这个问题。以前使用XCode 9可以正常工作
Guy Daher

1
此问题仍然存在于Xcode 10.2.1中
onmyway133 '19

Answers:


67

我在下面使用。

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

1
完美的解决方案!
伦德尔

工作正常!比改用旧版构建系统更好。
touti

我看不到“添加开发包”。您是说选择+标志吗?
亲爱的

1
是的+号。并选择一个豆荚。

完美的解决方案。我今天学到一些新东西。谢谢。
Hardik Thakkar

50

我在Xcode 10.0(10A255)上遇到了同样的问题。回到原来的构建系统(在“文件”->“项目/工作区设置”中),现在可以解决该问题,直到由Cocoapds或Xcode解决。


2
是的,这可行。之后,您可以切换回新的构建系统。
萨比兰郡

11
到目前为止,这是我在Xcode 10中发现的最烦人的bug之一。浪费了很多时间!
Shayno

FWIW在本地设置路径时,将“构建系统”设置为旧版效果很好。甚至pod install没有必要。pod install如果您有文件更改,则不需要,只有当您有新文件时
亲爱的,

8

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


这似乎是最可靠的,因为Apple的新构建系统无法发现更改,例如Catalyst不能与旧版一起使用:(
Rock_Artist

这种解决方法对我来说有点奏效。但是该脚本在pod安装运行时被覆盖
Luten

5

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

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

希望能有所帮助,并希望苹果尽快修复此问题...

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

更新9/25/18

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

更新9/23/19

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


您的解决方案效果很好。我只是不明白您的意思是“必须删除中间版本”。你能详细说明一下吗?
亲爱的

3

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

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

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

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


@NikKov完全同意,但是您有更好的解决方案吗?我已经提到,这两种解决方案都不是真正好的解决方案。
萨伦·英登

0

我尝试了接受的答案,但没有成功,然后我将其添加 install! 'cocoapods', :disable_input_output_paths => true到podfile中,现在可以正常工作了。

use_frameworks!

install! 'cocoapods', :disable_input_output_paths => true

target 'TargetName' do
  # ...
end


-2

我在开发Pod上工作了一段时间,在大多数情况下都能正常工作。更改不会生效,就像您只发生几次一样。

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


更新:

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

就我而言(在Xcode 10之前),大多数情况下它运行良好,但很少。


4
这是完全错误的答案。问题出在新的Xcode 10上,它缓存了所有其他目标,并且没有检测到本地Pod中的代码更改,而不是Pods文件夹中的代码更改。Xcode 9没有这个问题。
Legoless

2
@Legoless也许您此时必须使用Xcode 10强制清洁github.com/CocoaPods/CocoaPods/issues/8073
BB9z

是的,这绝对是一个解决方案,但是有一个大型项目,这在我的高端MBP上需要10-15分钟。如果您只是在细微的调整上迭代,那么您可以想象这浪费了多少时间。
Legoless

@Legoless是正确的。我已经在6月份将这个错误报告给了Apple,现在仍标记为已打开。只有干净的构建对我有用(Command + Shift + K,然后是Command + B)。
布鲁诺·菲利普
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.