我有一个在模拟器和设备上构建并运行良好的项目,但在归档时失败。
该项目非常陈旧,但我创建了一个单独的组件,我已在工作区中添加了该组件。
主要项目是用Objective-C编写的,新项目是用Swift 4编写的。该项目还使用CocoaPods,还包括用Swift 3.2编写的另一个子项目
有各种各样的错误归结为同一件事,子项目在编译时没有产生任何输出。或者它只是没有编译。我发现代码本身没有错误,只是在尝试引用时:
//1
error: /Users/<user>/Library/Developer/Xcode/DerivedData/<id>/Build/Intermediates.noindex/ArchiveIntermediates/<app name>/BuildProductsPath/Release-iphoneos/Framework.framework: No such file or directory`
//2
Signing Identity: "iPhone Developer: <redacted>“
/Users/<user>/Library/Developer/Xcode/DerivedData/<id>/Build/Intermediates.noindex/ ArchiveIntermediates/<app name>/InstallationBuildProductsLocation/Applications/<app name>/Frameworks/<framework>.framework: No such file or directory
Command /usr/bin/codesign failed with exit code 1
//3
@import ModuleName;
Module ‘ModuleName’ not found
这是我尝试过的:
$(SRCROOT)
添加到主目标&gt;构建设置&gt;框架搜索路径&gt;释放Skip install
在子项目构建设置YES
pod update
Always Embed Standard Swift Libraries
无论如何都没有区别其他说明:
/Users/<user>/Library/Developer/Xcode/DerivedData/<id>/Build/ Intermediates.noindex/ArchiveIntermediates/<app name>/ InstallationBuildProductsLocation/Applications/<app name>.app/Frameworks/
中,有一个.framework文件用于其他子项目和所有pod,但不适用于此podfile
中,use_frameworks!
存在更新
今天运行存档后,我只看到错误:
Module 'ModuleName' not found
其他错误消失了
答案 0 :(得分:6)
无法确定究竟是什么导致归档失败。但我很确定我可以给你正确的方向=]
在模拟器甚至真实设备上运行 - 编译项目&#34; 调试&#34;
存档困难,编译为&#34; 发布&#34;
我敢打赌,如果你设置在模拟器上运行将在发布模式下编译,它将失败!
检查!!
如果我更正了,您只需要为发布设置一些Build Settings
以匹配调试
我的第一个猜测是:所有搜索路径(框架搜索路径和运行路径搜索路径)
我看到了类似的行为here
毕竟我把它存档了。
看起来SDK-Project缺少构建配置 特设。哪个项目用于存档特定构建的项目 方案。我认为编译器正在寻找模块 $(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)路径
答案 1 :(得分:6)
问题与iOS Deployment Target
设置有关:
在Debug
中,它仅针对当前架构构建,在Release
中为所有架构构建。一旦你知道就明显了。
将子项目设置为针对iOS 10进行构建解决了这个问题。
最令人沮丧的部分:我仔细检查了构建日志,并没有在任何地方提到版本问题:(
答案 2 :(得分:0)
我遇到了这个错误,虽然我的部署目标不匹配,但实际上这并不是我的解决办法。我添加了一个新的构建配置,该配置试图用于存档,但是在添加pod install
后却忘记了运行它。运行pod install
之后,即使某些Pod的部署目标是iOS 10,而主要应用程序目标是iOS 11,我也可以很好地存档我的应用程序。
答案 3 :(得分:0)
可能与您无关,但对其他人有帮助:
如果您使用的是基于多模块SwiftPM的体系结构,那么您应该仔细阅读错误并找出某些软件包目标是否在源中导入了其他软件包目标而不将其集成到Package.swift
文件中。在这种情况下,即使发行版本也可以以某种方式解决依赖关系,并且如果其他软件包包含您的依赖关系,则成功,但是存档将失败。
包装图示例:
––––––––
App
├– PackageA [target1(import PackageC.target1)]
└– PackageB [target1(import PackageC.target1)]
└– PackageC [target1]
?成功构建,错误存档(在PackageA.target1中找不到模块PackageC.target1)
––––––––
App
├– PackageA [target1(import PackageC.target1)]
| └– PackageC [target1]
└– PackageB [target1(import PackageC.target1)]
└– PackageC [target1]
?成功构建和归档