如何将 .xcarchive 转换为 .ipa 以供客户端使用 Application Loader 将应用提交到应用商店

Posted

技术标签:

【中文标题】如何将 .xcarchive 转换为 .ipa 以供客户端使用 Application Loader 将应用提交到应用商店【英文标题】:How to convert .xcarchive to .ipa for client to submit app to app store using Application Loader 【发布时间】:2013-02-02 19:05:29 【问题描述】:

我们已经使用客户的证书和分发配置文件创建了 .xcarchive 文件代码签名,但我们需要将 .ipa 文件发送给我们的客户,以便他们可以使用 Application Loader 将应用上传到应用商店。

在 Xcode 4.5 中创建 .ipa 文件的唯一方法是单击“分发”->“保存以供企业或临时部署”,其下方有说明“签名并打包应用程序以在 ios App Store 之外分发”。

如果我们以这种方式保存 .ipa 文件,是否会导致提交到应用商店出现问题?或者是否有将 .xcarchive 转换为 .ipa 的正确方法?

提前致谢!

【问题讨论】:

【参考方案1】:

我在我的一个项目中也发现了同样的问题。

我通过更改目标中的设置解决了这个问题。对于主项目和依赖项。

 skip Install  NO

更改后,转到 Xcode->Product->Archive->Save for Enterprise or Ad-Hoc Deployment

我们遵循相同的流程并通过 Application Loader 上传,Apple 批准了该应用。

【讨论】:

跳过安装最初设置为 NO。这是否意味着我们可以在“保存以供企业或临时部署”之后安全地将 .ipa 文件发送给我们的客户? 是的,我在很多项目中都做了同样的事情,现在应用程序已经在应用程序商店上线了。确保您使用了分发配置文件。 XCode 8.2 中 ->Archive 下没有子菜单,因此这些说明不再起作用。 @LogicsaurusRex 在旧版 Xcode 中也没有子菜单。单击存档后,它将打开新窗口。选择 Save for Enterprise... 存档在 Xcode 12.5 的存档下没有子菜单。这会吐出一个.xcarchive 文件,而不是.ipa【参考方案2】:
    使用Xcode创建Xarchieve文件,点击product->archive 首先右键单击xarchive文件->在finder中显示 再次右键单击xarchive文件->显示包内容 然后打开文件夹 products->applications,在这里你得到你的应用程序文件

    现在,将这个拖放到 iTunes 商店的应用程序目录(在 iTunes 商店右上角找到应用程序下拉菜单)。这将自动将存档文件转换为 ipa 文件。 (在这里,您也可以这样做 -> 将 .app 文件拖放到 itunestore 中的任意位置,处理完成后,从搜索框中搜索回来)。

    然后再次右键单击它并 -> 在 finder 中显示,这将显示您的 ipa 文件。 现在您可以将其提供给任何用户

【讨论】:

在 OS X Mavericks 下使用 iTunes 11.4,这个解决方案似乎对我不起作用。起作用的是将应用程序文件(上面的第 4 步)拖到位于左上角的 iTunes 的Library 部分(其中列出了MusicMoviesTV Shows 等)。从那里,它创建了 .ipa 文件,并且由于它是我以这种方式添加到 iTunes 的第一个应用程序,还在我的 iTunes 库下创建了一个 Apps 部分。从那里,您可以右键单击该应用程序并选择Show in Finder 直接导航到它。 它在 iTunes 11.4 和 Mavericks 上工作,我今天自己试过了,在你的评论和工作正常之后 在优胜美地工作,Evan R 评论最后的步骤。 为什么再简单不过了?苹果似乎乐于让开发者受苦! 您能否更具体地介绍第 5 步?你的意思是将 MyProject.app 拖放到实际的 iTunes 应用程序屏幕中还是什么?如果没有,iTunes Store 的应用目录在哪里?我很困惑【参考方案3】:
XCode > Project > Archive
XCode > Organizer > Distribute > Enterprise/add Hoc > Save As
Saves as YOURAPP.ipa.
Make sure Save for Enterprise Deploy remains UNCHECKED.
Download latest Application Loader.
tap 'Deliver Your App'
make sure new version in itunes connect in WAITING FOR UPLOAD state
Click on Activity... button 

提示:打开 Console.app 以查看 XCode 验证错误

Click on ALL MESSAGE on list of logs on right.
Then in search enter 'XCode' or 'Application Loader' 
to monitor any errors with your upload.

注意:

我做了所有这些,但仍然收到关于缺少 120x120 图标的电子邮件。

忘记在 Build Target > General 选项卡中更新它们 iOS7 的新图标要求列表 http://www.icenium.com/resources/forums/icenium-general-discussion/missing-recommended-icon-file

【讨论】:

这应该是被接受的答案,因为没有人想玩 iTunes,更不用说某些版本,它只是没有在界面中显示应用程序选项卡... + 这还有很多开发者态度。【参考方案4】:

为 Xcode 7 和 8 更新

这是一个用于创建存档和生成 .ipa 的脚本 - 根据需要进行调整:

PROJECT=xxx
ARCHIVE_PATH=/tmp/$PROJECT.xcarchive
EXPORT_PATH=/tmp/$PROJECT # DIRECTORY
mkdir -p $ARCHIVE_PATH
xcodebuild -project ./$PROJECT.xcodeproj -scheme $SCHEME archive -archivePath $ARCHIVE_PATH -verbose

PLIST='"compileBitcode":false,"method":"enterprise"' # edit as needed

EXPORT_PLIST=/tmp/$PROJECT.plist
echo $PLIST | plutil -convert xml1 -o $EXPORT_PLIST -

xcodebuild -exportArchive -archivePath $ARCHIVE_PATH -exportPath $EXPORT_PATH -exportOptionsPlist $EXPORT_PLIST

【讨论】:

Xcode 6 不断抛出该错误,这个命令就像一个魅力 只是一个提示,您还可以通过附加 -exportProvisioningProfile "PROVISION_PROFILE_NAME" 来指定配置文件 此方法在新的 XCode 版本中已弃用,现在应该使用 exportOptionsPlist xcodebuild: error: invalid option '-exportFormat'【参考方案5】:

您可以从 XCArchive 创建 IPA。

    右键单击ProjectName [Date Time].xcarchive 选择显示包内容

它包括三件事:

一个。 dSYMs:dSYM 文件存储您应用的调试符号。

b. Info.plist :包含详细信息的属性列表,例如 ApplicationProperties、ArchiveVersion、CreationDate、Name、Scheme。

c。 产品:这包含您项目的应用文件。

    选择产品 -> 应用程序。这包含应用程序文件。

    现在,将应用程序文件拖放到 iTunes(MyApps 选项卡)中。

    选择您的项目。

    右键单击并选择“在取景器中显示”。这将找到新创建的 IPA 文件。

【讨论】:

当我尝试将该 IPA 上传到 diawi.com 时,它说找不到 bundle id 和 info.plist!有什么想法吗?【参考方案6】:

如果您在命令行中需要它,您可以在此处找到所有详细信息:http://encyclopediaofdaniel.com/blog/xcarchive-to-ipa。简而言之:

xcodebuild 
   -exportArchive -archivePath <path to archive> -exportPath <path to output> 
   -exportOptionsPlist <path to export options plist>

最小选项列表如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>method</key>
    <string>app-store</string>
</dict>
</plist>

当然,方法会根据您使用的配置文件类型而改变(app-store 用于分发配置文件)。运行 xcodebuild --help 以查看可用选项列表。

【讨论】:

你是在哪里找到这个 plist 示例的? PS:感谢您的解决方案!效果很好 @ArtemZaytsev 很高兴我能帮上忙!就像我在回答中提到的那样,运行 xcodebuild --help 会显示有效的 plist 值。【参考方案7】:

第一个产品>存档然后右键单击生成的xcodearchive文件并选择Show package content并转到Products -&gt; Applications文件夹。创建一个名为Payload 的新文件夹并将.app 文件拖到该文件夹​​中。压缩Payload文件夹并将其重命名为您想要的任何名称并将扩展名更改为.ipa

如果您的应用程序太大,您可以在构建设置中禁用位代码,使其缩小 50-70%。

【讨论】:

【参考方案8】:

xCode 13 及更高版本的更新

    在 xCode 上选择存档并单击右上角的按钮“分发应用程序”。

    在下一个屏幕中选择“App Store Connect”。

    选择“导出”。

    选择签名证书。

导出的文件夹将包含 ipa 文件。

您也可以使用Transporter 应用程序将您的 ipa 文件上传到 AppStoreConnect。

【讨论】:

以上是关于如何将 .xcarchive 转换为 .ipa 以供客户端使用 Application Loader 将应用提交到应用商店的主要内容,如果未能解决你的问题,请参考以下文章

ipa 和 xcarchive 的区别?

如何将应用打包成.ipa文件

如何将应用打包成.ipa文件

如何在终端上从 xcarchive 导出 dsym 文件

如何从 xcode bot 生成 .ipa?

如何将我的基于 javascript/React Native 的应用程序转换为 .ipa 进行部署?