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

62
我们已经使用客户证书和分发配置文件创建了.xcarchive文件的代码签名,但我们需要将.ipa文件发送给客户,这样他们就可以使用Application Loader上传应用到App Store上。
在Xcode 4.5中创建.ipa文件的唯一方法是单击Distribute->保存企业版或Ad-Hoc部署,其下面有一个描述,表示“签名并打包应用程序以在iOS App Store之外进行分发”。
如果我们以这种方式保存.ipa文件,是否会导致提交到应用商店时出现问题?或者有没有正确的方法将.xcarchive转换为.ipa文件?
8个回答

99
  1. 使用Xcode创建Xarchieve文件,点击Product -> Archive
  2. 首先右键单击xarchive文件->显示在Finder中
  3. 再次右键单击xarchive文件->显示包内容
  4. 然后打开products->applications文件夹,你会找到你的应用程序文件
  5. 现在,将它拖放到iTunes Store的应用目录中(在iTunes Store右上角找到应用程序下拉菜单)。这将自动将Archive文件转换为IPA文件。(在这里,你也可以这样做->将.App文件拖放到iTunes Store的任意位置,一旦处理完成,从搜索框中搜索回来)。

  6. 然后再次右键单击它并- >在Finder中显示,这将显示你的IPA文件。 现在你可以把它交给任何用户了。


6
在 OS X Mavericks 操作系统下使用 iTunes 11.4,这个方法似乎对我无效。有效的方法是将应用程序文件(上述步骤 #4)拖到 iTunes 左上角的“库”部分(列出了“音乐”、“电影”、“电视节目”等)。从那里,它会创建一个 .ipa 文件,并且由于这是我通过这种方式添加到 iTunes 的第一个应用程序,还会在我的 iTunes 库中创建一个“应用”部分。从那里,您可以右键单击该应用程序,然后选择“在 Finder 中显示”,以直接导航到它。 - Evan R
2
它运行在iTunes 11.4和Mavericks上,我今天试过了,在你的评论之后,它运行得很好。 - Mehul Thakkar
9
为什么不能更容易些呢?苹果似乎喜欢让开发者受罪! - Eduardo
你能在第五步中更具体一些吗? 你是指将MyProject.app拖放到实际的iTunes应用程序屏幕中,还是其他什么地方? 如果不是,请问iTunes Store的应用程序目录在哪里?我感到困惑。 - Artem Zaytsev
2
@md-rubel,是的,在新的Mac OS系统中,苹果已经移除了iTunes。现在你需要执行以下步骤: 前往“窗口”->“组织者”->“存档” 在这里,选择您的存档文件,然后单击右侧的“分发应用程序”按钮 然后,选择“导出”选项,而不是上传,并继续选择默认选项,它将生成ipa文件。 - Mehul Thakkar
显示剩余3条评论

54

已更新至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一直抛出那个错误,而这个命令却非常有效。 - Daniel Galasko
5
小提示,你也可以通过添加参数-exportProvisioningProfile "{PROVISION_PROFILE_NAME}"来指定配置文件。 - Daniel Galasko
1
该方法在新的XCode版本中已经过时,现在应该使用exportOptionsPlist - Ohad Schneider
2
xcodebuild: error: invalid option '-exportFormat' - David Seek

31

首先,进入“产品 > 存档”选项卡,然后右键点击生成的 xcodearchive 文件并选择 显示包内容,进入 Products -> Applications 文件夹。创建一个名为 Payload 的新文件夹,并将 .app 文件拖放到该文件夹中。压缩 Payload 文件夹并将其重命名为任何您想要的名称,并将扩展名更改为 .ipa

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


17
您可以从XCArchive创建一个IPA。
  1. 右键单击ProjectName [Date Time].xcarchive
  2. 选择Show Package Content

步骤1

步骤2

它由三个部分组成:

a. dSYMs :dSYM文件存储您的应用程序的调试符号。

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

c. Products :这包含您的项目的应用程序文件。

  1. 选择Products->Applications。 这包含应用程序文件。

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

  3. 选择您的项目。

  4. 右键单击并选择“在Finder中显示”。 这将定位新创建的IPA文件。

步骤4

步骤5


当我尝试将该IPA上传到diawi.com时,它显示找不到bundle id和info.plist!有任何想法吗? - Prajeet Shrestha

14

如果你需要从命令行获取这个东西,你可以在这里找到所有的细节: 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示例的?顺便说一句:感谢你的解决方案!它完美地运行。 - Artem Zaytsev
@ArtemZaytsev 很高兴我能帮到你!就像我在答案中提到的那样,运行 xcodebuild --help 将显示您可以使用的有效 plist 值。 - Ohad Schneider

13

在 Xcode 13 及之后版本中

  1. 在 xCode 中选择存档并点击右上角的按钮“Distribute app”。

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

  3. 选择“Export”。

  4. 选择签名证书。

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

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


11
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 图标的电子邮件。

忘记在“构建目标 > 通用”选项卡中更新它们,以下是 iOS7 的新图标要求列表: http://www.icenium.com/resources/forums/icenium-general-discussion/missing-recommended-icon-file


2
这应该是被认可的答案,因为没有人想要在iTunes上浪费时间,更不用说某些版本中它只是在界面上不显示应用程序选项卡了... + 这是更具开发者态度的做法。 - Dominik Bucher

11

我在我的一个项目中也遇到了同样的问题。

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

 skip Install  NO

更改后,转到Xcode->产品->存档->保存用于企业或Ad-Hoc部署

我们按照相同的过程,并通过应用程序加载器上传,苹果批准了该应用程序。

输入图像描述


1
跳过安装最初设置为NO。这是否意味着在“保存企业或Ad-Hoc部署”后,我们可以安全地将.ipa文件发送给客户? - aobs
是的,我在许多项目中都这样做了,应用程序现在已经上架到应用商店了。请确保您使用了分发配置文件。 - Guru
1
在XCode 8.2中,->存档下面没有子菜单,因此这些指示不再适用。 - Logicsaurus Rex
@LogicsaurusRex 在旧版本的 Xcode 中也没有子菜单。一旦您点击归档,它就会打开新窗口,在那里选择“保存为企业版...”。 - Guru
Xcode 12.5中的“存档”下没有子菜单“存档”。这将生成一个“.xcarchive”文件,而不是“.ipa”文件。 - Pigpocket

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接