ios 打ipa包的方法以及打包過程中出現(xiàn)的問題

公司的帳號(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了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蕾殴,一起剝皮案震驚了整個(gè)濱河市笑撞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌钓觉,老刑警劉巖茴肥,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異议谷,居然都是意外死亡炉爆,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門卧晓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來芬首,“玉大人,你說我怎么就攤上這事逼裆∮羯裕” “怎么了?”我有些...
    開封第一講書人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵胜宇,是天一觀的道長耀怜。 經(jīng)常有香客問我,道長桐愉,這世上最難降的妖魔是什么财破? 我笑而不...
    開封第一講書人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮从诲,結(jié)果婚禮上左痢,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好俊性,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開白布略步。 她就那樣靜靜地躺著,像睡著了一般定页。 火紅的嫁衣襯著肌膚如雪趟薄。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,185評(píng)論 1 284
  • 那天典徊,我揣著相機(jī)與錄音杭煎,去河邊找鬼。 笑死宫峦,一個(gè)胖子當(dāng)著我的面吹牛岔帽,可吹牛的內(nèi)容都是我干的玫鸟。 我是一名探鬼主播导绷,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼屎飘!你這毒婦竟也來了妥曲?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤钦购,失蹤者是張志新(化名)和其女友劉穎檐盟,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體押桃,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡葵萎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了唱凯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片羡忘。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖磕昼,靈堂內(nèi)的尸體忽然破棺而出卷雕,到底是詐尸還是另有隱情,我是刑警寧澤票从,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布漫雕,位于F島的核電站,受9級(jí)特大地震影響峰鄙,放射性物質(zhì)發(fā)生泄漏浸间。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一吟榴、第九天 我趴在偏房一處隱蔽的房頂上張望魁蒜。 院中可真熱鬧,春花似錦、人聲如沸梅惯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽铣减。三九已至她君,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間葫哗,已是汗流浹背缔刹。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留劣针,地道東北人校镐。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像捺典,于是被迫代替她去往敵國和親鸟廓。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容

  • 引言 關(guān)于開發(fā)證書配置(Certificates & Identifiers & Provisioning Pro...
    奮斗的蝸牛閱讀 7,348評(píng)論 2 20
  • 引言關(guān)于開發(fā)證書配置(Certificates & Identifiers & Provisioning Prof...
    molake閱讀 48,135評(píng)論 7 62
  • 3月4日襟己,一條狗的使命引谜。以一只狗的角度講述故事,思考人生擎浴。Belly的使命就是Eathen和Helen在一起员咽,讓他...
    顏葉杉閱讀 230評(píng)論 0 0
  • 這是一個(gè)夏天,有一個(gè)小女孩兒初伊來到媽媽旁邊說:“媽媽給我買一個(gè)手機(jī)吧贮预!”媽媽生氣的說:“你聽不聽話贝室,我們家窮,你...
    666哥們閱讀 221評(píng)論 0 0