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