Xcode 6.0 从 Archive 导出 ipa 会要求输入开发者账号,如下图所示,使用xcodebuild这个命令行工具可以绕开这个限制。
命令
清理项目
1
2
3
|
xcodebuild
clean
-
project
$
{
PROJECT_NAME
}
.xcodeproj
\
-
configuration
$
{
CONFIGURATION
}
\
-
alltargets
|
Archive
1
2
3
|
xcodebuild
archive
-
project
$
{
PROJECT_NAME
}
.xcodeproj
\
-
scheme
$
{
SCHEME_NAME
}
\
-
archivePath
bin
/
$
{
PROJECT_NAME
}
.xcarchive
|
Export ipa
1
2
3
4
|
xcodebuild
-
exportArchive
-
archivePath
$
{
PROJECT_NAME
}
.xcarchive
\
-
exportPath
$
{
PROJECT_NAME
}
\
-
exportFormat
ipa
\
-
exportProvisioningProfile
$
{
PROFILE_NAME
}
|
说明
${PROJECT_NAME}
${SCHEME_NAME}
${PROFILE_NAME}
FAQ
xcodebuild archive 时卡住
在调用上面的 xcodebuild archive 命令时卡住,
可能是由于 scheme 文件不存在造成的。
一般只将 Xcode 项目文件中的 project.pbxproj 文件加入到版本控制,而忽略和用户相关的 scheme 文件。Xcode 会自动生成 scheme 文件,但是 xcodebuild 工具不会,在执行 archive 的时候会卡死。
为了将 scheme 文件加入版本控制,需要将 scheme 改为共享类型。
Code signing failed
需要在命令行解锁keygen:
1
2
3
4
5
|
LOGIN_KEYCHAIN
=
~
/
Library
/
Keychains
/
login
.keychain
# 用户密码
LOGIN_PASSWORD
=
xxx
security
unlock
-
keychain
-
p
$
{
LOGIN_PASSWORD
}
$
{
LOGIN_KEYCHAIN
}
|
no provisioning profile matches ‘xxx’
${PROFILE_NAME} 不是 .mobileprovision 的文件名,也不是 profile 的 UUID,而是 profile 的 Name 字段,可以在 Xcode 中查看:
也可以在 .mobileprovision 文件中查看:
简单脚本
Simple iOS Build Script:GitHub