Iphone 无法在xcode中生成iOS应用程序存档

Iphone 无法在xcode中生成iOS应用程序存档,iphone,ios,xcode,macos,Iphone,Ios,Xcode,Macos,我从应用程序生成iOS应用程序存档时遇到问题。该应用程序编译得很好,甚至可以在模拟器中工作。现在我想进行som临时测试,但无法生成iOS应用程序存档。当我点击产品->归档时,它会生成一个通用的xcode归档。有人能帮我吗。我应该提到的是,我已经生成了此应用程序的iOS应用程序存档。出于某种原因,它刚刚停止生成iOS存档。非常感谢。如果您添加了框架/库,则可能会出现这种情况。。。您需要编辑该库的目标->构建设置,并将“跳过安装”设置设置为“是”。重新归档时,XCode应再次开始生成“iOS应用程序

我从应用程序生成iOS应用程序存档时遇到问题。该应用程序编译得很好,甚至可以在模拟器中工作。现在我想进行som临时测试,但无法生成iOS应用程序存档。当我点击产品->归档时,它会生成一个通用的xcode归档。有人能帮我吗。我应该提到的是,我已经生成了此应用程序的iOS应用程序存档。出于某种原因,它刚刚停止生成iOS存档。非常感谢。

如果您添加了框架/库,则可能会出现这种情况。。。您需要编辑该库的目标->构建设置,并将“跳过安装”设置设置为“是”。重新归档时,XCode应再次开始生成“iOS应用程序归档”,而不是“通用XCode归档”。

此外,请将安装跳到,如果您在应用程序项目中打开了另一个库/框架项目,则必须移动标题(如果有)在构建阶段从公共到项目/复制标题

检查生成设置:

  • 对于主项目目标,“跳过安装”不是“否”
  • 对于框架(子项目)目标,“跳过安装”为“是”
  • 在子项目的构建阶段,复制头需要在项目中,而不是公共的(如果构建静态库,则不适用)
  • 部署下的安装目录有效(例如/Applications)

  • 在我的例子中,我必须将FMDB和BlocksKit都移动到静态库中。以前,它们是作为子项目构建的。请记住,您可以使用lipo创建通用库。在构建最终产品时,模拟器代码将自动剥离。

    我做了以下工作使其适合我:

  • 我有一个three20静态库,我曾经在主项目中包含文件
  • 遵循所有其他子项目/静态库的跳过安装,并如上所述将复制头从public切换到project
  • 最重要的是:在项目使用的每个库中,转到构建阶段->复制文件,并确保目标
    绝对路径
    更改为
    产品目录
    。注意:请参阅下面的提示,缩小搜索范围以查找导致此错误的库
  • 就这样

    提示:要了解导致存档创建存档文件而不是ipa的违规文件,请执行以下操作:

  • 选择存档并单击分发按钮
  • 选择“保存生成的产品”选项
  • 点击下一步并保存
  • 在Finder中浏览创建的目录
  • “libraries”子目录将标识您需要将Skip Install设置为Yes的库
  • 在某些情况下,
    usr/local/include
    将识别您需要从Public移动到Project的罪魁祸首文件,或者您必须从绝对路径更改到products目录的文件(甚至是忘记将skip install设置为yes标志的文件)。但该目录(即usr/local/include)因子库目录结构而异。在许多情况下。。您将看到上面列出的步骤3中“复制文件”下列出的所有文件。如果你在这里找到了它们,那么你就有了问题原因的明确答案

  • 更新提示:让生活更简单。。以上提示中步骤4下出现的任何文件。。只需在xcode的全局搜索中搜索它。。你应该立即得到你想要的结果。。例如,这是我的文件夹的内容(按照上面提示中的步骤):

    所以我可以说它与加密和ssl库有关。。正在搜索它们:


    使我意识到我忘记将“跳过安装”设置为“是”。

    我遇到了这个问题。在我的例子中,这是由于将Mac应用程序目标作为iOS应用程序的依赖项造成的

    之所以这样设置,是因为Mac应用程序是用来为iOS应用程序生成一些数据的工具,这些数据随后包含在捆绑包中


    在构建iOS应用程序之前,我必须删除该依赖项并单独构建该工具。

    尽管我使用的是Xcode5,而对我来说排序的是编辑构建方案-尝试上述所有适用的建议对我的情况没有帮助

    我有两个目标,比如“应用”和“应用免费”。我在尝试归档免费版本时遇到了通用归档的问题,我在应用程序的“正常”版本之后添加了免费版本。在我的例子中,当我在工具栏中选择其方案并选择“编辑方案”时。。。我看到构建部分有两个目标,即应用程序和应用程序免费


    我取消选中了App的所有列,只选中了appfree的列,然后单击OK。下次我选择“产品>存档”时,我的应用程序是免费的,而不是普通存档。:)

    对Alex L的答案的补充


    第3点。将“生成设置”->“公用标头文件夹路径”更改为“包含/xxx”也可以使用。

    另一个可能的原因是在“目标依赖项”中引用不同平台的项目。在我的特殊情况下,我正在从事一个共享OSX和iOS代码的项目。在其中一个iOS目标中,我意外地添加了一个OSX目标作为依赖项

  • 转到“生成设置”并添加

    yourAppName/Resources/dist.plist代码签名权限

  • 按cmd+B键,选择iOS设备或真实设备作为构建目标

  • 完成后->滚动至“产品”文件夹,右键单击yourAppName.app

  • 选择“在查找器中显示”

  • 创建一个名为有效负载的文件夹(大写字母“p”

  • 复制
    ${TARGET_BUILD_DIR}/myTempDir
    
        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
    
    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