遵循以下幾條原則,不再糾結(jié)Xcode代碼簽名問題
多虧了下面的這些習(xí)慣,這一年里我再也沒有為Xcode的Code Signing問題糾結(jié)過。這些習(xí)慣有的看起來很大材小用,而且它們大都比用Xcode里的內(nèi)置支持功能更“復(fù)雜”。但那又怎樣!去他媽的胡說八道!做自己的事情,回去該干嘛干嘛!
1.千萬不要使用Xcode內(nèi)置的Code Signing助手工具。尤其不要點擊那個所謂的Fix Issuue按鈕。那不僅會讓你觸及很多沒用的文件(iOS Team Provisioning Profile…),而且還會導(dǎo)致你陷入配置文件的怪圈。
2.千萬不要使用通配符App ID(wildcard app identifiers)。尤其當(dāng)你在多個團(tuán)隊,而且每個團(tuán)隊又有多個通配符App ID的時候就會很麻煩?;ㄒ稽c時間登錄到開發(fā)者中心,為你的每個app生成一個特有的bundle ID。不使用通配符App ID,會大大減少Code Signing道路上的陷阱。如果你有使用通配符的項目,馬上刪除它。新版Xcode使這些變的比之前更難。Let me Google that for you.
3.使用build code sign 和shared schemes。在“Manage Schemes…”面板勾選Shared讓這一切變的輕松。一個是開發(fā)環(huán)境,一個用于App Store的releases版本。如果需要,也可以考慮增加一個用于beta版本。在編輯窗口為每一個scheme選擇合適的編譯配置。如果你選擇Xcode提供的默認(rèn)的編譯配置,那么的你的開發(fā)方案會是debug模式,你的發(fā)布方案會是release模式。
4. 使用明確的code-signing identities和自動配置選擇。因為你現(xiàn)在使用了share schemes連接到指定的構(gòu)建配置,所以你可以把你的Xcode項目設(shè)置的更具幫助性。對于你工程的Code Signing Identity 和Provisioning Profile設(shè)置需要distribution證書(Ad Hoc, Enterprise, or App Store distributions)。如果你懶的話,你也可以使用自動的iOS Distribution??赡芪矣刑嗟膖eams,讓我不信任xcode能做的那么準(zhǔn)確。我建議使用iOS開發(fā)自動設(shè)置您的調(diào)試版本,這樣有益于其他的開發(fā)者合作。我發(fā)現(xiàn)使用以上的signing identities設(shè)置,我能為所有的構(gòu)建設(shè)置使用自動provisioning profile。
5.在target級設(shè)置上重復(fù)項目級的設(shè)置。另一個常見問題就是代碼簽名和配置文件選擇的項目級別設(shè)定與target級別設(shè)定不匹配。除非你認(rèn)為你不會犯這個錯誤(我之前也認(rèn)為我不會,但現(xiàn)在我知道怎樣才更好)。手動將代碼簽名和Provisioning profile設(shè)置為project和 target級別的,并定期檢查以確保它們保持一致。
6.刪除Keychain Access中過期的證書。Keychain Access讓它變的非常簡單。大多數(shù)證書(Ad Hoc, APN, and App Store)的有效期是365天,一些企業(yè)證書可能會延長至三年。在你創(chuàng)建新的分發(fā)證書和 APN證書的時候,設(shè)置日期鬧鐘來提醒你去及時更新,以防止證書過期之后你的APN 服務(wù)突然發(fā)怒,警告你代碼錯誤。
7.確保Keychain Access里有所有需要的證書。在每個團(tuán)隊里你至少需要兩個證書:1)一個允許你在設(shè)備上安裝app的開發(fā)者證書。2) 一個分發(fā)證書允許你提交程序到 App Store。你也許會需要兩個額外的證書用于推送通知(一個用于開發(fā)、一個用于生產(chǎn))。開發(fā)和分發(fā)證書適用于你團(tuán)隊里的所有程序。APN證書是特定于每個應(yīng)用的。確保你有這些證書的私鑰,存儲你的證書并導(dǎo)到安全便捷的地方,以防萬一你的高級工程師們因為一些要命的蠢蛋都癱瘓掉的時候,你團(tuán)隊里的每個人都可以傳送到APP Store。
8.安裝新的文件或證書后無論如何都要重啟你的Xcode。緩存過期的證書特別容易出現(xiàn)緩存錯誤。