該文章屬于劉小壯原創(chuàng)麦乞,轉(zhuǎn)載請(qǐng)注明:劉小壯
這篇文章不是講開發(fā)者賬號(hào)過期蕴茴,怎樣進(jìn)行續(xù)費(fèi)的。而是講開發(fā)者賬號(hào)過期后姐直,怎樣繼續(xù)進(jìn)行打包測(cè)試倦淀,以及其中的原理的。
當(dāng)然声畏,在開發(fā)者賬號(hào)過期之前撞叽,就及時(shí)續(xù)費(fèi)這是最明智的選擇,如果開發(fā)者賬號(hào)沒有續(xù)費(fèi),可以看看下面的文章應(yīng)急能扒。
賬號(hào)過期
如果證書過期佣渴,在打包時(shí)還和之前的一樣,只要配置文件初斑、打包證書辛润、Bundle Identifier
沒有錯(cuò)誤,就可以正常Archive
见秤。
但是你對(duì)Archive
之后的.xcarchive
文件砂竖,使用打包證書進(jìn)行打包簽名的時(shí)候,按照之前的打包流程進(jìn)行打包鹃答,你會(huì)發(fā)現(xiàn)蘋果需要你添加一個(gè)Apple ID
乎澄。
然后你到Accounts
中發(fā)現(xiàn),我已經(jīng)添加了一個(gè)Apple ID
了测摔,并且是對(duì)應(yīng)當(dāng)前證書的Apple ID
置济。(如果沒有添加,則添加即可)
你發(fā)現(xiàn)添加Apple ID
之后锋八,打包界面并沒有發(fā)生變化浙于,還是之前的樣子,就算刷新之后也沒有什么用挟纱。如果是這樣羞酗,那么遺憾的告訴你,請(qǐng)去開發(fā)者賬號(hào)看看是否過期了紊服。
然而進(jìn)去之后檀轨,你會(huì)發(fā)現(xiàn)蘋果已經(jīng)提醒你賬號(hào)過期了,這樣就不能正常打包了欺嗤。
根據(jù)蘋果的官方描述参萄,如果賬號(hào)過期后App
將不能下載,也無法更新和提交App
剂府,以及失去修改配置證書拧揽、描述文件剃盾、以及開發(fā)者的身份腺占。但是已經(jīng)安裝App
的用戶依然可以使用,我們也可以繼續(xù)訪問iTunes Connect
和使用免費(fèi)開發(fā)資源痒谴。
如果是299$
的企業(yè)賬號(hào)過期衰伯,已經(jīng)下載的App
將不能使用,打開后會(huì)直接崩潰积蔚。還有一種教育賬號(hào)意鲸,這種賬號(hào)不會(huì)過期。
蘋果為了防止賬號(hào)過期的問題,在賬號(hào)過期前會(huì)給賬號(hào)的Agent
用戶發(fā)送一封郵件怎顾,告知賬號(hào)快過期了读慎,需要續(xù)費(fèi)。而且提供了自動(dòng)續(xù)費(fèi)的功能槐雾,在賬號(hào)過期前30
天自動(dòng)從銀行卡扣費(fèi)夭委,但是這個(gè)功能只在部分地區(qū)可用(然而并不包含中國(guó)大陸)。
賬號(hào)過期募强,怎么解決
賬號(hào)過期后株灸,你可以點(diǎn)擊上圖中的renew your membership
,然后進(jìn)行續(xù)費(fèi)擎值。
然而續(xù)費(fèi)之后并不一定能立即使用慌烧,而且現(xiàn)在著急打測(cè)試包。也或者公司是企業(yè)級(jí)(299美元)賬號(hào)鸠儿,不著急續(xù)費(fèi)屹蚊,只是想進(jìn)行發(fā)布測(cè)試〗浚可以通過以下方式解決這個(gè)問題淑翼。
- 直接在
Xcode
中選擇Window -> Orgenizer
,找到我們Archives
之后的包品追,操作如下:
Archives -> Show in Finder -> 顯示包內(nèi)容 -> Products -> Applications
然后直接將這個(gè)包拖到iTunes
中玄括,就可以生成一個(gè)ipa
包,這個(gè)ipa
包就是可以安裝的包肉瓦。
- 可以在
Xcode
中重新編譯當(dāng)前程序遭京,編譯完成后,在文件目錄中Show in Finder
出這個(gè)包泞莉。
我們可以直接將這個(gè)包壓縮哪雕,然后將壓縮包改zip
后綴為ipa
后綴即可。
- 在
Xcode
中添加打包腳本為我們自動(dòng)打包鲫趁,在Build Phases
中添加Run Script
斯嚎,直接將腳本代碼添加進(jìn)去即可。
下面是本文中使用的腳本代碼挨厚,打包的腳本代碼網(wǎng)上一搜一大把堡僻,可以根據(jù)需求查找打包腳本。
/usr/bin/xcrun -sdk iphoneos PackageApplication -v "${RELEASE_BUILDDIR}/${APPLICATION_NAME}.app" -o "${BUILD_HISTORY_DIR}/${APPLICATION_NAME}.ipa" --sign "${DEVELOPER_NAME}" --embed "${PROVISONING_PROFILE}”
通過以上方式打的測(cè)試包疫剃,在開發(fā)者賬號(hào)過期的情況下钉疫,都可以正常安裝測(cè)試,可以對(duì)外發(fā)布測(cè)試巢价。
防患于未然
開發(fā)者賬號(hào)過期之前牲阁,及時(shí)續(xù)費(fèi)是必要的固阁,這可以從根本上解決問題,千萬別因?yàn)檫@點(diǎn)錢壞了大事城菊。
可以在賬號(hào)沒過期之前备燃,在Xcode中登陸過開發(fā)者賬號(hào)后,先將Provisioning Profiles
文件導(dǎo)出到本地一份凌唬。
在賬號(hào)過期之后赚爵,我們將Accounts
中之前到賬號(hào)Apple IDs
刪除。然后將Mac
斷網(wǎng)法瑟,斷網(wǎng)之后將系統(tǒng)時(shí)間修改為過期之前的時(shí)間(盡量靠前一些)冀膝,然后雙擊Provisioning Profiles
文件安裝即可,使用這種方式還能應(yīng)付一段時(shí)間霎挟。
賬號(hào)過期窝剖,為什么還能打
證書
首先我們要明確的就是什么是開發(fā)者證書。
先來說一些理論性的知識(shí)點(diǎn)酥夭,開發(fā)者證書是蘋果頒發(fā)給開發(fā)者赐纱,用來驗(yàn)證開發(fā)者身份的一個(gè)文件。這個(gè)文件類似于我們做加密時(shí)熬北,常用的數(shù)字證書一樣疙描。使用模擬器運(yùn)行時(shí)不需要證書,在真機(jī)測(cè)試或打包時(shí)讶隐,需要使用證書進(jìn)行簽名起胰。
證書中最重要的是其中包含的一個(gè)私鑰,證書的校驗(yàn)使用的是RSA
非對(duì)稱加密算法巫延,這個(gè)私鑰就是和蘋果服務(wù)器進(jìn)行校驗(yàn)的一把鑰匙效五。如果證書中的私鑰不正確,則校驗(yàn)失敗炉峰,不能進(jìn)行相關(guān)的操作畏妖。
在iOS
中的私鑰一般都是2048
位的,這個(gè)級(jí)別的私鑰長(zhǎng)度是非常安全的疼阔,目前為止破解最長(zhǎng)的私鑰只有RSA-768
的長(zhǎng)度戒劫。
導(dǎo)出私鑰
我們所說的導(dǎo)出私鑰也就是導(dǎo)出p12
文件,導(dǎo)出證書后團(tuán)隊(duì)中其他人就可以使用這個(gè)證書婆廊,否則這個(gè)證書必須在生成證書助理文件的電腦上使用迅细。
原因
我們分析一下為什么可以使用已過期賬號(hào)的證書。開發(fā)者賬號(hào)過期后否彩,如果證書的有效期沒有過期疯攒,蘋果并不會(huì)刪除證書的公私鑰,還會(huì)繼續(xù)提供校驗(yàn)服務(wù)列荔。
在證書生成后會(huì)有一個(gè)證書有效期敬尺,只要這個(gè)有效期內(nèi)使用證書就是有效的。如果證書過期后贴浙,我們只需要將過期的證書revoke
之后生成新證書砂吞,之后都是用新證書即可。