返回首頁
當前位置: 主頁 > 精通Office > Ubuntu教程 >

如何使用 xcodebuild 從 archive 導出 ipa

時間:2017-11-15 21:21來源:知行網www.f1globe.com 編輯:麥田守望者

Xcode 6.0 從 Archive 導出 ipa 會要求輸入開發者賬號,如下圖所示,使用xcodebuild這個命令行工具可以繞開這個限制。

add_apple_accountXcode 在導出 ipa 時提示輸入開發者賬號

命令
清理項目
 


1
2
3 xcodebuild clean -project ${PROJECT_NAME}.xcodeproj \
-configuration ${CONFIGURATION} \
-alltargets

 

Archive
 


1
2
3
4 xcodebuild archive -project ${PROJECT_NAME}.xcodeproj \
-scheme ${SCHEME_NAME} \
-destination generic/platform=iOS \
-archivePath bin/${PROJECT_NAME}.xcarchive

 

Export ipa
 


1
2
3
4 xcodebuild -exportArchive -archivePath bin/${PROJECT_NAME}.xcarchive \
-exportPath bin/${PROJECT_NAME} \
-exportFormat ipa \
-exportProvisioningProfile ${PROFILE_NAME}

 

說明
${PROJECT_NAME}
project_name

${SCHEME_NAME}
scheme_name

${PROFILE_NAME}
profile_name

FAQ
xcodebuild archive 時卡住
在調用上面的 xcodebuild archive 命令時卡住,

xcodebuild archive 卡住xcodebuild archive 卡住

可能是由于 scheme 文件不存在造成的。

一般只將 Xcode 項目文件中的 project.pbxproj 文件加入到版本控制,而忽略和用戶相關的 scheme 文件。Xcode 會自動生成 scheme 文件,但是 xcodebuild 工具不會,在執行 archive 的時候會卡死。

用戶相關的 scheme用戶相關的 scheme

為了將 scheme 文件加入版本控制,需要將 scheme 改為共享類型。

管理 scheme

 

管理 scheme

 

共享 scheme

 

共享 scheme

 

共享的 scheme

 

共享的 scheme

Code signing failed或執行codesign命令時卡住
一種可能的情況如下圖所示。

codesign failed

 

codesign failed

有兩種解決辦法:

第一種是將所用的私鑰從Login Keychain移動到System Keychain,并設置成允許codesign訪問或者允許所有的應用訪問;
第二種是在命令行解鎖Keychain,但也需要將私鑰設置成允許codesign訪問或者允許所有的應用訪問。
設置私鑰允許codesign訪問私鑰或者允許所有的應用訪問私鑰
keychain-access-allow-codesign

 

允許codesign訪問私鑰

 

允許所有應用訪問私鑰

 

允許所有應用訪問私鑰

在執行xcodebuild前,在命令行解鎖keychain
 


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 中查看:

Xcode 中查看 profile name

 

Xcode 中查看 profile name

也可以在 .mobileprovision 文件中查看:

mobileprovision 文件中查看 profile name

 

mobileprovision 文件中查看 profile name

腳本
GitHub:spritefly/ios-builder
 

------分隔線----------------------------
標簽(Tag):xcodebuild
------分隔線----------------------------
推薦內容
猜你感興趣
99久久免费高清热精品