我从应用程序生成iOS App存档时遇到问题。该应用程序可以很好地编译,甚至可以在模拟器中运行。现在,我想进行即席测试,并且无法生成iOS App存档。当我单击产品->存档时,它将生成一个通用的xcode存档。谁能帮我。我应该提到,我已经生成了此应用程序的iOS应用程序存档。由于某种原因,它刚刚停止生成iOS存档。非常感谢。
我从应用程序生成iOS App存档时遇到问题。该应用程序可以很好地编译,甚至可以在模拟器中运行。现在,我想进行即席测试,并且无法生成iOS App存档。当我单击产品->存档时,它将生成一个通用的xcode存档。谁能帮我。我应该提到,我已经生成了此应用程序的iOS应用程序存档。由于某种原因,它刚刚停止生成iOS存档。非常感谢。
Answers:
检查构建设置:
/usr/local/include
。如果您要构建静态库,则标头必须为Public,因此如果#3将“ Public Headers Folder Path”更改为更合理的名称,则更为正确include/$(TARGET_NAME)
。@CopperCash在下面的答案中对此进行了说明。
如果添加了框架/库,则会发生这种情况……您需要编辑该库的“目标”->“构建设置”,并将“跳过安装”设置设置为“是”。重新存档时,XCode应该再次开始生成“ iOS App存档”,而不是“通用xcode存档”。
除了将“ 跳过安装”设置为“ 是”之外,如果您在应用程序项目中打开了另一个lib / framwork项目,则还必须在构建阶段 / 复制标题中将标题(如果有)从public移到项目。
我做了以下工作以使其适合我:
Absolute path
为products directory
。注意:请参见以下提示以缩小搜索范围,以查找导致此错误的库。就是这样!
提示:要了解引起档案文件创建档案文件而非ipa的问题文件,请执行以下操作:
usr/local/include
将识别出从“公共”移动到“项目”所需的罪魁祸首文件,或者从绝对路径更改为产品目录所必须更改的文件(甚至忘记了将“跳过安装”设置为“ yes”标志的文件)。但是该目录(即usr / local / include)取决于您的子库目录结构。在许多情况下..您将在此处列出的上述第3步中的“ 复制文件”下看到列出的所有文件。如果在这里找到它们,那么您将对问题的原因有明确的答案。更新为提示:使生活更加简单.. 上面提示中第4步下出现的任何文件..只需在xcode的全局搜索中进行搜索..您应该立即得到想要的结果..例如,这是我的文件夹的内容(按照上面提示中的步骤进行操作):
所以我可以说它与crypto和ssl库有关..搜索它们:
让我意识到我忘记将跳过安装设置为是。
./usr/local/include
。
如果您导出存档,请打开存档,然后/urs/local/include
在“ 产品”中尝试以下建议:
在每荚下
Packaging
,Private Headers Folder Path
并Public Headers Folder Path
设置成/usr/local/include
。如果我清除它们,则会得到有效的存档。
将我的React Native应用程序升级到0.11.0
Xcode 7
和CocoaPods 后为我工作0.39.0.beta.4
。
如果您使用的是CocoaPods以及WatchKit或Today Extension,则CocoaPods回购中有一个未解决的问题,可能会解释您的问题所在。
对我来说,解决方案是Copy Pod Resources
从下的WatchKit扩展目标和Today扩展目标中删除该阶段Build Phases
。完成此操作后,该项目将按预期进行编译和存档。
希望这对某人有帮助,这让我难过了一整天!
如果以上任何一个答案都无效,则可能是您的问题cocoaPods
。最新的更新0.38.1
使我感到困惑,但后来我降级了0.37.1
,一切恢复了正常。使用Xcode 6.3.1
以后编辑:更新为0.38.2
也将解决此问题。有关导致此问题的原因的更多信息,在这里:Cocoapods 0.38.1无法创建有效的存档
0.38.2
,仍然有问题。您在使用Xcode 7吗?
/Library/Frameworks
。我认为这可能与未将Google可可豆荚构建为动态框架有关。听起来类似于github.com/CocoaPods/CocoaPods/issues/3889
更新到iOS 9和Xcode 7后,我遇到了这个问题。Josh H的解决方案为我工作:
在每个窗格中的“打包”下,“专用头文件夹路径”和“公共头文件夹路径”设置为/ usr / local / include。如果我清除它们,则会得到有效的存档。
我还为Podfile制作了一个安装后脚本,以自动执行此操作!
post_install do |installer_representation|
installer_representation.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['PUBLIC_HEADERS_FOLDER_PATH'] = [""];
config.build_settings['PRIVATE_HEADERS_FOLDER_PATH'] = [""];
end
end
end
只需将其添加到Podfile的底部并运行 pod install
我的工作区中有多个项目(GTL,Pods和主项目),这对我有用:
选择项目,将有两种类型,有项目和目标。
对于项目,是不是你的主喜欢GTL
或者PODS
:
项目:
Skip Install = NO
Installation Directory = /Applications
// For pods
Private Headers Folder Path = ""
Public Headers Folder Path = ""
目标:
Skip Install = YES
Installation Directory = /Applications
// For pods
Private Headers Folder Path = ""
Public Headers Folder Path = ""
对于主项目(通常与您的产品名称相同):
项目:
Skip Install = NO
Installation Directory = /Applications
目标:
Skip Install = NO
Installation Directory = /Applications
检查每个项目和目标上的ios部署目标,以确保它们都相同。
我有这个问题。就我而言,这是由于将Mac应用程序目标保留为iOS应用程序的依赖关系所致。
之所以这样设置,是因为Mac应用程序是用于为iOS应用程序生成一些数据的工具,该工具随后包含在捆绑软件中。
在构建iOS应用本身之前,我必须删除该依赖性并单独构建工具。
在我的场景中,只有在开始将Swift代码包含到我的主要Objective-C项目中之后,我才得到错误的“通用存档”。经过大量的故障排除和对Xcode吐出的存档文件的检查之后,我注意到该SwiftSupport
文件夹(具有Swift运行时所需的dylib)位于我的存档中,而不是来自全新的Swift项目应用程序存档中的文件夹。 。
我找到了Installation Directory
构建设置,并注意到它已在我的项目中设置为自定义路径。我只是将其删除(将其设置为的通用值/Applications
),然后按我的预期工作了下一个Build-> Archive,并给了我适当的iOS App Archive。
TL; DR:在您的应用程序中包含Swift代码时,请确保您的Installation Directory
构建设置被设置为其默认值/Applications
,尤其是当您从一个较旧的项目文件开始时,该文件可能具有一些意外的旧版构建设置。
如果在“项目”>“目标”>“构建阶段”>“目标依赖项”中有任何.xcodeproj文件,请从此处删除它,然后构建您的ipa。这个对我有用。干杯
您可以在此处获得答案:xcode正在创建通用xcode存档,而不是iOS App存档
就我而言,我必须将FMDB和BlocksKit都移到静态库中。以前,它们是作为子项目构建的。请记住,您可以使用lipo创建通用库。在构建最终产品时,将自动剥离模拟器代码。
我通过仅在XCode中打开应用程序项目来解决此错误,即。不打开工作区包含应用程序和其他项目/库/框架。
我有2个独立的项目,一个框架或共享库以及一个iOS应用程序,我不得不打开2个不同的XCode窗口,每个窗口都通过直接打开.xcodeproj文件而不是通用的.xcworkspace来预先构建。
作为一个很好的副作用,在执行Clean之后,XCode不再重建每个项目的每个目标,从而缩短了构建时间。
背景:我正在创建一个开源SDK和一个演示iOS应用程序。我都在一个工作区中打开过。在SDK目标上将“ 跳过安装”设置为“是”将阻止任何人创建存档,因为它将是空的,因此这不是一个选择。使用Project而不是Public标头会导致归档文件丢失应分发的标头文件,因此也不是一种选择。
因为这是因为我在工作区中工作。该项目确实已存档,但不会显示在组织者窗口中。我关闭了工作区,并自行打开了项目。档案已在组织者中打开。希望对您有所帮助。
xcodebuild
。解决方案是指定目的地:xcodebuild -destination generic/platform=iOS