公司的帳號(hào)是企業(yè)帳號(hào)俺抽,開發(fā)的app不需要上傳到App store若未,而是直接打包成ipa包提供給公司內(nèi)部使用拴事。我參考了許多前輩們的方法蒋伦,加上自己的總結(jié)得到如下打包ipa包的方法:如有錯(cuò)誤請(qǐng)指出弓摘,謝謝!
OS有兩種證書和描述文件:
證書類型使用場景
開發(fā)(Development)證書和描述文件用于開發(fā)測試痕届,在HBuilder中打包后可在真機(jī)環(huán)境通過Safari調(diào)試
發(fā)布(Distribution)證書和描述文件用于提交Appstore韧献,在HBuilder中打包后可使用Application Loader提交到Appstore審核發(fā)布
準(zhǔn)備環(huán)境
必需要有蘋果開發(fā)者賬號(hào),并且加入了“iOS Developer Program”
Mac OS 10.9以上系統(tǒng)(如果已經(jīng)申請(qǐng)p12證書則不需要)
(打包需要:添加UDID +鑰匙串申請(qǐng)的請(qǐng)求性文件 +發(fā)布證書文件+發(fā)布描述性文件)
(企業(yè)帳號(hào)不需要添加別人的UDID)
登錄iOS Dev Center
打開網(wǎng)站https://developer.apple.com
使用蘋果開發(fā)者賬號(hào)登錄帳號(hào):
登錄成功后在頁面右側(cè)選擇“Certificates, Identifiers & Profiles”:
[一]添加調(diào)試設(shè)備(UDID)
開發(fā)描述文件必須綁定設(shè)備研叫,所以在申請(qǐng)開發(fā)描述文件之前锤窑,先添加調(diào)試的設(shè)備。
(如果已經(jīng)添加設(shè)備嚷炉,或是企業(yè)帳號(hào)則可跳過此節(jié)渊啰,不用添加UDID)
拿到UDID的方法:
將設(shè)備連接到電腦,啟動(dòng)iTunes申屹,點(diǎn)擊次區(qū)域可切換顯示設(shè)備的UDID绘证,右鍵選擇復(fù)制
打開“Registering a New Device or Multiple Devices”頁面,輸入設(shè)備名稱和UDID:
就可以在這里面看到你添加進(jìn)去的UDID了
[二]生成證書請(qǐng)求文件(鑰匙串)
不管是申請(qǐng)開發(fā)(Development)證書還是發(fā)布(Distribution)證書哗讥,都需要使用證書請(qǐng)求(.certSigningRequest)文件嚷那,證書請(qǐng)求文件需在Mac OS上使用“Keychain Access”()工具生成。
打開鑰匙串訪問工具:
打開菜單鑰匙串訪問(一般在電腦的左上角)
打開創(chuàng)建請(qǐng)求證書頁面杆煞,在頁面中輸入用戶郵件地址(User Email Address)魏宽、證書名稱(Common Name),請(qǐng)求類型(Request is)選擇保存到磁盤(Saved to disk):
點(diǎn)擊“Continue”后彈出保存路徑:
點(diǎn)擊“Save”后保存證書請(qǐng)求文件决乎,成功提示:
生成以下文件:
保存文件名稱為“CertificateSigningRequest.certSigningRequest”队询,后面申請(qǐng)開發(fā)(Development)證書和發(fā)布(Production)證書時(shí)用到。
[三]申請(qǐng)發(fā)布(Distribution)證書
發(fā)布(Production)證書用于正式發(fā)布環(huán)境下使用构诚,用于提交到Appstore審核發(fā)布蚌斩。
申請(qǐng)發(fā)布(Production)證書
在“Certificates, Identifiers & Profiles”頁面“Certificates"Production",可查看到已申請(qǐng)的所有發(fā)布(Production)證書范嘱,點(diǎn)擊右上角的加號(hào)可創(chuàng)建新證書:
打開“Add iOS Certificate”頁面凳寺,在“Production”欄下選中“App Store and Ad Hoc”:
在頁面底部選擇“Continue”:
打開確認(rèn)證書請(qǐng)求頁面,點(diǎn)擊“Continue”繼續(xù):
打開證書生成頁面彤侍,先點(diǎn)擊“Choose File...”選擇“生成證書請(qǐng)求文件”章節(jié)生成的“CertificateSigningRequest.certSigningRequest”文件肠缨,再點(diǎn)擊“Generate”生成cer證書:
生成證書成功后打開證書下載頁面,選擇“Download”下載保存證書(ios_production.cer):
雙擊保存到本地的ios_development.cer文件導(dǎo)入到“Keychain Access”:
導(dǎo)入成功后盏阶,可以在證書列表中顯示:
選中導(dǎo)入的證書晒奕,右鍵選擇“Export "Developer" ...”:
打開證書保存頁面,輸入文件名名斟、選擇路徑后點(diǎn)擊“Save”:
打開設(shè)置證書密碼頁面脑慧,輸入密碼及確認(rèn)密碼后點(diǎn)擊“OK”:
打開訪問“Keychain Access”密碼頁面,輸入Mac OS管理員密碼砰盐,點(diǎn)擊“Allow”闷袒,保存開發(fā)(Development)證書(如“HBuilderCert.p12”可以提供給別人使用)。
得到文件:
[四]申請(qǐng)發(fā)布(Distribution)描述文件(打包的時(shí)候必用)
在“Certificates, Identifiers & Profiles”頁面“Provisioning Profiles”下選擇“Distribution"岩梳,可查看到已申請(qǐng)的所有發(fā)布(Distribution)描述文件囊骤,點(diǎn)擊右上角的加號(hào)可創(chuàng)建新描述文件:
打開“Add iOS Provisioning Profile”頁面晃择,在“Development”欄下選中“iOS App Development”:
點(diǎn)擊“Continue”按鈕,打開“App ID”選擇頁面也物,選擇要使用的“App ID”(如之前創(chuàng)建的“io.dcloud.HBuildApp”)宫屠,點(diǎn)擊“Continue”:
打開“Select certificates”頁面,選擇前面創(chuàng)建的發(fā)布證書:
點(diǎn)擊“Continue”滑蚯,輸入描述文件的名稱(如“HBuilderProfileDistribution”):
點(diǎn)擊“Generage”浪蹂,生成描述文件成功:
點(diǎn)擊“Download”下載保存開發(fā)描述文件(如HBuilderProfileDistribution.mobileprovision)。
雙擊文件自動(dòng)添加到項(xiàng)目的工程中告材。
[五]設(shè)置Xcode內(nèi)容坤次,進(jìn)行打包
打開Xcode:
注意這里的Bundle ID和team的使用:
在每個(gè)info.plist文件中設(shè)置Bundle ID
點(diǎn)擊桌面窗口的Product,進(jìn)行Archive
進(jìn)入Archive界面
最終得到ipa包就成功了:
[六]如何給別人使用:
1.可以將ipa包直接發(fā)給別人斥赋,可利用iTunes 和手機(jī)進(jìn)行同步缰猴,直接安裝。
2.利用第三方網(wǎng)站灿渴,如:蒲公英網(wǎng)站洛波,fir.im網(wǎng)站生成二維碼掃描即可安裝
備注:
若也經(jīng)打過ipa包的項(xiàng)目,在修改項(xiàng)目的內(nèi)容后骚露,第二次打包時(shí)在UDID蹬挤,發(fā)布證書文件,描述性文件等沒有刪除的情況下可直接進(jìn)行Xcode里面的操作就可以了棘幸,不必再申請(qǐng)相應(yīng)的證書焰扳。
[七]打包時(shí)遇到問題:
錯(cuò)誤:
錯(cuò)誤1.證書配置不對(duì)
錯(cuò)誤2:
2.archive的時(shí)候報(bào)“no identity found"錯(cuò)
錯(cuò)誤3:若Archive為灰色(不可點(diǎn))
1.證書問題
要打包ipa首先需要設(shè)置code sign identity,一個(gè)應(yīng)用需要打包至少需要三個(gè)要素:證書误续,APP ID吨悍,還有一個(gè)容易被忽略的provisioning profile。
證書的申請(qǐng)流程到處都可以找到蹋嵌,這里只簡單介紹一下育瓜,首先使用鑰匙串創(chuàng)建一個(gè)certSigningRequest文件,然后登錄apple developer的ios developer申請(qǐng)證書栽烂,將certSigningRequest文件上傳躏仇,生成一個(gè)證書,將它下載下來即可腺办。接著是APP ID焰手,仍然是到apple developer創(chuàng)建,一般是公司域名的倒寫加應(yīng)用名怀喉。就是通過provisioning profile书妻,它也是通過apple developer官網(wǎng)創(chuàng)建,在創(chuàng)建時(shí)會(huì)讓你選擇類型躬拢,打包ipa測試的話就選擇AD HOC躲履,記得添加UDID见间,創(chuàng)建后下載下來生成mobileprovision文件,雙擊運(yùn)行即添加到資源庫中去崇呵,而xcode在讀取你的系統(tǒng)里的證書時(shí)實(shí)際上是在查找資源庫里面的provisioning profile缤剧。provisioning profile包含了證書馅袁,APP ID和UDID列表域慷,archive后這些信息會(huì)被加入ipa中。
錯(cuò)誤4."file not found"
在archive時(shí)會(huì)碰到一個(gè)蛋疼的問題汗销,就是明明在模擬器編譯運(yùn)行都正常犹褒,但是打包ipa時(shí)卻報(bào)一個(gè)找不到頭文件的錯(cuò),這是由于直接編譯時(shí)使用的是你的系統(tǒng)的頭文件目錄弛针,而archive時(shí)使用的時(shí)SDK下的頭文件目錄叠骑,一般情況下這兩者時(shí)一致的,但是有些特殊庫的頭文件削茁,如libxml宙枷,在系統(tǒng)下/usr/include/libxml2是包含在頭文件自動(dòng)搜索范圍內(nèi)的,而SDK中這個(gè)目錄不在自動(dòng)搜索范圍內(nèi)茧跋,所以就會(huì)報(bào)一個(gè)"file not found"慰丛。
解決方式就是在編譯參數(shù)里面添加一個(gè)頭文件搜索目錄,工程->build setting瘾杭,搜索header search paths诅病,添加你需要手動(dòng)添加的頭文件目錄,如/usr/include/libxml2粥烁。
3.顯示archive success贤笆,但是organizer不能自動(dòng)彈出,手動(dòng)打開也看不到剛剛打的包讨阻,或者沒有share按鈕可點(diǎn)
遇到這種問題可能有各種不同的原因芥永,但是我敢說90%以上都是因?yàn)橥粋€(gè)原因,而這個(gè)問題的解決方法也超簡單钝吮,工程->build setting埋涧,搜索deployment,找到skip install項(xiàng)搀绣,將其改成NO飞袋,target->build setting,搜索deployment链患,找到skip install項(xiàng)巧鸭,將其改成NO,
解決方法:
注意:請(qǐng)先確保證書設(shè)置沒有問題
在Xcode中當(dāng)你在更新了你得證書而再重新編譯你的程序麻捻,真機(jī)調(diào)試會(huì)出現(xiàn)“Your build settings specify a provisioning profile with the UUID‘XXX’, however, no such provisioning profile was found.??Xcode can resolve this issue by downloading a new provisioning profile from the Member Center.”纲仍。解決方案如下:
1.關(guān)閉項(xiàng)目呀袱,找到項(xiàng)目文件XXXX.xcodeproj,在文件上點(diǎn)擊右鍵郑叠,選擇“顯示包內(nèi)容”(Show Package Contents)夜赵。會(huì)新打開一個(gè)Finder。
2.在新打開的Finder中找到project.pbxproj乡革,并且打開寇僧,找到所有包含報(bào)錯(cuò)的UUID‘XXX’的行(包含UUID后面的一串?dāng)?shù)字的行,可能不包含"UUID")沸版,整行刪除嘁傀。
3.保存,重新啟動(dòng)項(xiàng)目视粮,再編譯细办,就OK了。