使用 xcodebuild 來 archive 並導出 app

之前我曾寫過一篇文章macOS app 實現自動化 notarize 腳本,但並沒有提到使用代碼自動編譯並生成 App 的腳本,畢竟這一步有好多工具可以完成,比如說 fastlane。

我由於在 notarize 之前也沒想過做自動化,而在寫那篇文章的時候 fastlane 還沒有支持 notarized 上傳,於是我就自己寫了,具體的編譯命令是這樣的:

這樣就可以直接把 dsym 和 app 文件生成出來了,方便的很。

……可是好景不長,最近蘋果似乎改動了 notarized 服務器行為,之前就一直讓人頭疼的 sparkle 集成簽名問題再度出現,簡而言之就是每次使用腳本生成的 app,對 sparkle 的簽名總是出現各種問題,而本地檢測又是正常的。

作為對比,使用 Xcode 自己的 archive 生成​​並上傳,是一切正常的(我單獨給 Sparkle 做了額外的簽名代碼,是可行的,但用命令編譯就不行)。

我猜測可能是直接生成 App 丟失了什麼緩存,經過查詢,現在分為兩步走,先生成正常的 archive ,然後再從 archive 中導出 app。

生成 存檔 ,這一步沒什麼好說的,直接就能成功了,接下來的步驟則有點複雜:

選擇你剛剛生成的 xcarchive,然後從裡邊導出 app(並簽名),這一步要求了一個奇怪的 -exportOptionsPlist ,且目前在網上也找不到什麼完整的模板,總的來說這個配置文件是不用寫滿全部參數的,把主要參數寫了就行,其他參數按默認即可,以前的 Xcode 版本還可以從 archive 功能裡導出一份配置文件(這個文件在導出時也存在一份拷貝),現在似乎不能了,總之,我給出一個模板,你可以參考來寫,反正如果寫錯了,它會報錯,然後告訴你缺少什麼參數,又或者哪個寫錯了,應該是哪些之一,很好排錯:

比如上文中 teamIDsigningStyle 字段,其實都可以省略,因為 xcodebuild聯編 會自動從你的項目配置中讀取。


這下導出的 app 就可以正常 notarized 了。

本文由 落格博客 原創撰寫:落格博客 » 使用 xcodebuild 來 archive 並導出 app

轉載請保留出處和原文鏈接:https://www.logcg.com/archives/3385.html

關於作者

R0uter

如非聲明,本人所著文章均為原創手打,轉載請註明本頁面鏈接和我的名字。

註釋

  1. 你好, 首先 – 非常感謝您的博客, 它讓我開始. 但是,xcodebuild -exportArchive的部分不適用於我, 尤其是那些我無法正確理解的-exportOptionsPlist條目. xcodebuild不斷發出廢話錯誤,並拒絕導出我的檔案 – 並且儘管plist條目在xcodebuild -help中有所記錄 | 抓住了exportOptionsPlist — 我還是沒辦法. 如果您設法使它起作用, 我想聯繫您幾個問題.

發表評論

您的電子郵件地址不會被公開. 必填字段標 *