提问者:小点点

Xcode12以错误的顺序为模拟器构建目标?


我的项目总是在所有使用Xcode11的设备上正确运行,但是在我安装了Xcode12Beta4之后,它无法在模拟器上构建。

我比较了Xcode11和Xcode12的构建日志,在Xcode12中,我的主要目标似乎是在cocoa pods目标之前构建的,因此链接将失败,因为将找不到cocoapods库。

如何修复构建目标的顺序?

在Xcode11中,一切都很好。我自己的目标是在cocoapods目标之后建立的。

在Xcode12中,构建是无序的我自己的目标是在cocoapods目标之前构建的。


共3个答案

匿名用户

null

但我仍然认为Xcode12的新测试版可能会修复这个问题。因为这似乎是Xcode12的一个bug(我的项目在Xcode11和Xcode12+ios设备中工作完美,仅在Xcode12+模拟器中失败)

2020-08-17更新

我找到了一个更确切的原因来重现这个问题,似乎我在Xcode12中打开的项目文件将在user-definities中自动生成一个VALID_ARCHS宏,而这个宏将使构建失败

并且我发现,使用这个宏,在构建链接的过程中,链接目标类型将是一个未知类型'ARM64-APPLE-IOS11.0-Simulator',这将导致构建失败,并且所有目标以错误的顺序构建的问题似乎只在添加这个宏时才会发生

XcodeDefault.xctoolchain/usr/bin/clang -target arm64-apple-ios11.0-simulator 

在我删除这个VALID_ARCHS宏之后,链接目标类型将是'x86_64-apple-ios11.0-simulator',并且一切都很顺利

XcodeDefault.xctoolchain/usr/bin/clang -target x86_64-apple-ios11.0-simulator 

2020-09-11添加添加Apple关于此宏的反馈

>

Xcode不会将VALID_ARCHS添加到项目中。实际上,我们建议不要使用valid_archs。也许某个可可脚出于某种原因在你的项目中设置了它?CocoaPods不是Xcode的一部分,所以我们无法控制它们的功能。

需要注意的一点是,在Xcode11中,VALID_ARCHS出现在体系结构部分。因为我们强烈建议不要使用它,所以它不再显示在那里,现在出现在用户定义部分,如果它被定义的话。

Xcode11用于自动将模拟器的arm64构建转换为x86_64构建,但是现在arm64是一个有效的模拟器架构(它是苹果硅架构),这种转换不再发生。

因此,我们认为您应该从项目中完全删除VALID_ARCHS,并确保将体系结构(ARCHS)设置为标准体系结构(ARCHS_STANDARD),而不是设置为特定的东西(除非您确实知道为什么不使用ARCHS_STANDARD)。

。。。。。。反馈端。。。。。。

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

在删除VALID_ARCHS宏之后,构建可能仍然无法工作。对于某些人,您可以查看添加的Apple's反馈的答案和@AndreiHerford's回答如下:

确保Architectures(ARCHS)设置为Standard Architectures(ARCHS_STANDARD)

然后删除宏,希望这两个步骤对所有人都有效:)

。。。。。。。。2020-10-10添加了End.。。。。。。。。。。。。

匿名用户

通过在体系结构设置中使用,而且在中使用,我能够在模拟器和设备上解决这个问题。我不确定这样改变弓形可能会有什么副作用,但是到目前为止我还没有遇到任何新的问题。

详细信息:

null

相反,用解决了为模拟器构建时的问题。似乎从来都不是一个正确的平台,被Xcode翻译成了x86。由于苹果公司已经宣布转向ARM处理器,这种翻译不再正确,因此必须使用正确的平台

关于Apple,不应该再使用VALID_ARCHS了。但是,在为设备构建时,此修复程序不起作用。最终,使用(用于模拟器和设备)在两种情况下都实现了这一目的。

对遇到这种问题的人好好看。使用XCode从来不会感到无聊。。。

匿名用户