2012-06-14 88 views
44

我們正在爲其他公司構建應用程序。他們持有簽名密鑰,寧可不與我們分享。使用xcodebuild構建不帶代碼的iOS應用程序

應該可以分開構建和簽名,但是如何在xcodebuild的命令行中指定它?

編輯爲那些從搜索來這裏。被接受的答案是正確的 - 它確實符合問題的要求。 但是,大圖是分離構建和codesign(允許沒有分配鍵的開發人員構建應用程序)。較新版本的Xcode爲此提供了工具。這不是嚴格的回答這個問題,所以我把它作爲一個要點:https://gist.github.com/noamtm/5c3aaa0b615477162ccd

+0

這是你在找什麼? http://cydia.saurik.com/codesign.html – QED

+0

更改設置後,以下是您如何檢查應用程序包是否已簽名:'codesign -dv/Applications/AppName.app' – Daniel

回答

96

爲了跳過代碼簽名您可以從控制檯這樣執行手動編譯:

xcodebuild clean build CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO 

使用額外的-configuration-target-sdk參數,以定義構建設置。

請參閱此stackoverflow answer以獲得有關如何禁用Xcode內部代碼簽名的詳細說明。

+0

謝謝。還沒有測試過,但它是有道理的。 – noamtm

+5

這可行,但問題是無法生成'codesign --entitlements ... --resource-rules ...'命令所需的必需授權和資源規則文件。如果您打算使用iCloud,這一點特別重要。自己生成這些文件並不是微不足道的。另見http://stackoverflow.com/questions/9280130/how-to-call-builtin-productpackagingutility-in-command-line。 – Alexander

+1

謝謝謝謝謝謝謝謝 – liang

8

不幸的是,在沒有代碼簽名的情況下,您可能很難在發佈模式下構建您的應用。你會得到從構建系統錯誤,如本:

CodeSign error: code signing is required for product type 'Application' in SDK 
       'iOS 5.1' 

在這種情況下,你應該配置你的目標使用您的開發者/團隊通配符(*)的發佈模式簽署的身份。應用程序將在構建時與該應用程序簽署,並且您可以將其發送給客戶,以便他們可以辭職。這是我們大部分外包開發人員所做的。

然後,您可以通過刪除應用程序中的各種文件(如_CodeSignature)並使用codesign工具從應用程序二進制文件中刪除信息來刪除代碼簽名信息。但我不確定這是多麼容易。但這並不是真的必要。供應配置文件或簽署信息中沒有任何敏感信息。

+0

因此,這將是過程用於構建.ipa發送給正在使用Citrix/Zenprise將該應用部署到其員工的客戶?你能評論我的帖子嗎?:http:// stackoverflow。com/questions/16089918/citrix-receiver-xenapp-xenmobile-zenprise -ipa-provisioning-and-deployment- – whyoz

3

在Project Navigator中,選擇您的項目並打開項目的「Build Settings」部分(而不是任何特定的目標)。

在「代碼簽名」下,找到「代碼簽名身份」,並將調試和發佈模式都設置爲「任意iOS SDK」爲「不要代碼簽名」。

5

完全防止代碼在Xcode 7簽約,我使用所有的下列選項:

CODE_SIGN_IDENTITY="" 
CODE_SIGNING_REQUIRED="NO" 
CODE_SIGN_ENTITLEMENTS="" 
CODE_SIGNING_ALLOWED="NO" 

最後一個選項,CODE_SIGNING_ALLOWED="NO"似乎這樣的伎倆。

+0

只是也想做同樣的事情。感謝分享。 –

+0

注意:即使我使用期望的權利文件運行編碼簽名,我也無法添加權利(應用程序組),無法使用它們構建的檔案庫。 –

+0

請注意,我不會爲歸檔版本做這個破解。當我在模擬器中運行/測試我的應用程序時,我只想不碰到代碼簽名。存檔操作通常需要對您進行密碼設置,可能根本不應該將其禁用。 –

相關問題