使用 xcodebuild 从 archive 导出 ipa

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 从 archive 导出 ipa)