使用 xcodebuild 从 archive 导出 ipa

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用 xcodebuild 从 archive 导出 ipa相关的知识,希望对你有一定的参考价值。

参考技术A Xcode 6.0 从 Archive 导出 ipa 会要求输入开发者账号,如下图所示,使用xcodebuild这个命令行工具可以绕开这个限制。

命令

清理项目

xcodebuild clean -project $PROJECT_NAME.xcodeproj \

             -configuration $CONFIGURATION \

             -alltargets

ARCHIVE

xcodebuild archive -project $PROJECT_NAME.xcodeproj\

               -scheme $SCHEME_NAME \

               -destination generic/platform=ios\

               -archivePath bin/$PROJECT_NAME.xcarchive

EXPORT IPA

xcodebuild -exportArchive -archivePath bin/$PROJECT_NAME.xcarchive \

                         -exportPath bin/$PROJECT_NAME \

                         -exportFormat ipa \

                         -exportProvisioningProfile $PROFILE_NAME

说明

$PROJECT_NAME

$PROFILE_NAME

FAQ

XCODEBUILD ARCHIVE 时卡住

在调用上面的 xcodebuild archive 命令时卡住,可能是由于 scheme 文件不存在造成的。一般只将 Xcode 项目文件中的 project.pbxproj 文件加入到版本控制,而忽略和用户相关的 scheme 文件。Xcode 会自动生成 scheme 文件,但是 xcodebuild 工具不会,在执行 archive 的时候会卡死。

用户相关的 scheme

为了将 scheme 文件加入版本控制,需要将 scheme 改为共享类型。

管理 scheme

CODE SIGNING FAILED或执行CODESIGN命令时卡住,一种可能的情况如下图所示。

有两种解决办法:

• 第一种是将所用的私钥从Login Keychain移动到System Keychain,并设置成允许codesign访问或者允许所有的应用访问;

• 第二种是在命令行解锁Keychain,但也需要将私钥设置成允许codesign访问或者允许所有的应用访问。

设置私钥允许codesign访问私钥或者允许所有的应用访问私钥

在执行xcodebuild前,在命令行解锁keychain

LOGIN_KEYCHAIN=~/Library/Keychains/login.keychain

# 用户密码

LOGIN_PASSWORD=xxx

security unlock-keychain -p $LOGIN_PASSWORD $LOGIN_KEYCHAIN

NO PROVISIONING PROFILE MATCHES ‘XXX’

带有跳过安装的 xcodebuild 存档

【中文标题】带有跳过安装的 xcodebuild 存档【英文标题】:xcodebuild archive with Skip Install 【发布时间】:2012-09-20 12:28:16 【问题描述】:

我的 XCode 项目包含子项目(静态库)。在这个静态库项目的设置中,Skip install 选项设置为YES

我想对我的项目进行存档。此时我可以使用命令xcodebuild -scheme MyScheme -sdk iphoneos6.0 archive 执行此操作。但是在MyScheme 计划中,我有Release 配置用于Archive 操作。我也希望能够在Debug 配置中创建存档。

然后我尝试使用xcodebuild -target MyTarget -configuration Debug -sdk iphoneos6.0 archive命令,但它不计算:

=== BUILD NATIVE TARGET foo OF PROJECT fooProj WITH CONFIGURATION Debug === Check dependencies unsupported build action 'archive'

我认为我收到此错误是因为 Skip install 选项。此外,最好使用targetconfiguration 进行归档和构建,而不是使用scheme 选项,因为方案数据在.gitignore 文件中,并且不同的开发人员可能对同一个项目有不同的方案。

是否有任何方法可以针对targetconfiguration 选项对我的项目进行存档?

【问题讨论】:

【参考方案1】:

xcodebuild -project TestBuildProject.xcodeproj -configuration Release -scheme TestBuildProject archive

因此,要存档您的配置必须是 Release 而不是 Debug,并且您必须指定一个方案。

https://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/xcodebuild.1.html

【讨论】:

以上是关于使用 xcodebuild 从 archive 导出 ipa的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Xcode 12.5 `xcodebuild -archive` 抱怨在没有 AppClip 的应用程序中缺少 appclip 权利?

ERROR ITMS-90046 using xctool / xcodebuild vs XCode Archive 的成功

使用 Xcode 的命令行构建工具存档(xcodebuild 存档)

带有跳过安装的 xcodebuild 存档

使用 xcodebuild 分离构建目录

使用 xcodebuild 从命令行构建 Cocoa 应用程序后,如何运行它?