iOS打包——從入門到放棄1——iOS簽名那點兒破事兒

背景

首先來點背景——為什么會有「簽名」男应。

1970年代麻裁,在Unix上運行program/軟件,不需要額外獲取權(quán)限贤姆,就能訪問系統(tǒng)的硬件、數(shù)據(jù)(因為程序是自己寫的——你應(yīng)該不會給自己電腦「下毒」)稳衬。

后來霞捡,第三方軟件出現(xiàn),出于安全原因薄疚,需要對第三方軟件的權(quán)限做出限制(請求同意后才能獲取權(quán)限)——你應(yīng)該不想出現(xiàn)這種情況:別人開發(fā)的軟件碧信,在不經(jīng)你同意的情況下,讀取了你D盤「Cooking」文件夾里面《第一次做鴨的經(jīng)歷》這個文件——雖然你的鴨做得真的很好街夭。

所以砰碴,為了解決上面這個問題,Apple的工程師板丽,想到的解決方案是App Sandbox——就是把第三方軟件框在一個盒子里呈枉,想要用你的硬件(攝像頭、麥克風(fēng))埃碱,或者訪問你的數(shù)據(jù)猖辫,都要經(jīng)過你的同意。

這個看這張圖:


App Sandbox

「RW APP」就表示第三方軟件砚殿,黃色區(qū)域就是Sanbox啃憎,左邊就是你電腦的一些資源——第三方軟件在經(jīng)過你同意后,才能訪問似炎。

而今天討論的「簽名」辛萍,就隱藏在右邊的「Provisioning Profile」,這個術(shù)語羡藐,這里就不作翻譯了叹阔,后面會介紹定義。

術(shù)語

這里涉及幾個術(shù)語:App ID传睹,Entitlement耳幢,CertificateProvisioning Profile

先看一張圖:


Term

App ID

是你的App在蘋果平臺上的唯一識別碼。并通過這個App ID睛藻,和你的開發(fā)團隊綁定在一起启上。(App IDBundle ID店印,Identifier冈在,可以當(dāng)作是同一樣?xùn)|西)

如圖所述,它回答的問題是:Who are you按摘?

Entitlement

Xcode中點擊Capability+按鈕包券,會增加一個entitlements后綴的文件。
(這里的Entitlement 炫贤,Capability溅固,Capabilities,可以簡單看做是同一樣?xùn)|西)

也可以看作是「permission」的同義詞兰珍。

這些文件侍郭,描述了你的App要訪問哪些系統(tǒng)資源。如圖所示掠河,就是「你想干嘛」—— What do you want to do?

注意亮元,在操作層面,Entitlement是App ID的一部分唠摹,因為在蘋果開發(fā)者網(wǎng)站中爆捞,你想修改Entitlement,就是去到修改Identifier的地方:


Entitlement

另外勾拉,如果修改了這里的Entitlement煮甥,就需要重新生成「Provisioning Profile」去打包。

Certificate

我們常說的「證書」望艺,用于確認開發(fā)者的身份苛秕〖》茫回答問題:Can I trust you找默?

常用的是兩種類型:

  • Development:你用Xcode跑App到真機,用的就是這個「開發(fā)證書」吼驶。因為開發(fā)者很多惩激,所以可以有很多的「Development Certificate」
  • Distribution:打包上傳到App Store,用的就是這個「打包證書」蟹演。有一定權(quán)限才能生成风钻、使用這個證書,所以不是每個開發(fā)者都能打包App酒请。

證書有1年的有效期骡技,過期了,「Provisioning Profile」也就用不了了。

Provisioning Profile

「 Provisioning Profile」將上述的3樣?xùn)|西布朦,整合在一起囤萤,讓你可以打包你的App。

注意是趴,如果是用Ad Hoc這種發(fā)布方式涛舍,Provisioning Profile里面還會包含一個額外的Device List——哪些設(shè)備能安裝這個App。

Ad Hoc是Apple提供的一種內(nèi)部分發(fā)方式唆途,主要是方便小規(guī)模的(內(nèi)部)測試富雅。

除了發(fā)布到App Store,蘋果還提供了以下5種非公開的「內(nèi)部」分發(fā)方式:

  • Personal Team distribution:就是你自己用Xcode安裝App到真機
  • Ad hoc distribution:只能裝100臺機器肛搬,而且「Provisioning Profile」要包含一個能安裝App的設(shè)備列表——換言之没佑,你需要在打包前取得所有安裝手機的UDID。
  • TestFlight:內(nèi)部100滚婉,外部1萬——更強大的分發(fā)图筹、測試App的方式
  • In-house distribution:大企業(yè)的內(nèi)部分發(fā)
  • Custom App Distribution:后出的非公開分發(fā)方式,和TestFlight让腹,App Store Connect整合远剩,推薦大企業(yè)使用。

(簽名)打包

下面演示兩種分發(fā)方式:「App Store發(fā)布」和「Ad Hoc發(fā)布」

App Store發(fā)布

一些額外的術(shù)語

  • CSR(Certificate Signing Request):
    • 用Mac的Keychain Access這個軟件骇窍,生成的「.certSigningRequest」文件
    • 里面包含了「公鑰」瓜晤、「私鑰」、「證書/Certificate」
    • 上傳到蘋果開發(fā)者網(wǎng)站腹纳,讓蘋果「簽名」痢掠,就會得到一個.cert文件。這樣就能確認你的身份了(下載后雙擊安裝)
App Store Release

黑框部分嘲恍,是「發(fā)布證書」的生成足画,解決的是上述的「Can I trust you」這個問題。

黃框部分的Entitlement佃牛,解決的是上述「What do you want to do」這個問題淹辞。

紅框部分,就是將「發(fā)布證書」俘侠、「App ID」(提前創(chuàng)建好的)象缀、「Entitlement」這3個東西整合在一起,生成「App Store」類型的「Provisioning Profile」

藍框部分:打包爷速、上傳了——利用Xcode得Archive & Upload

Ad Hoc發(fā)布

Ad Hoc Release

粉色框部分:因為Ad Hoc只能分發(fā)到特定手機央星,所以要到開發(fā)者網(wǎng)站,注冊要安裝App的手機(需要拿到手機的UDID)

黑框部分惫东,是「發(fā)布證書」莉给,因為上面「App Store發(fā)布」的時候,已經(jīng)創(chuàng)建過「發(fā)布證書」了,這里可以用同樣的「發(fā)布證書」颓遏,無需再重復(fù)創(chuàng)建胁黑。

紅框部分,就是將「發(fā)布證書」州泊、「App ID」(提前創(chuàng)建好的)丧蘸、「Entitlement」、「Device List」這4個東西整合在一起遥皂,生成「Ad Hoc」類型的「Provisioning Profile」(和「App Store」類型會有些許差異)

藍框部分:打包力喷、導(dǎo)出ipa文件——利用Xcode得Archive & Upload。然后ipa文件演训,可以手動安裝到手機弟孟,也可以上傳到第三方平臺(DeployGate, 蒲公英 etc),進行「無線安裝」样悟》髂迹或者自建服務(wù)器也可以。

畢窟她。

下回預(yù)告:《Build Settings的那些破事兒》

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末陈症,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子震糖,更是在濱河造成了極大的恐慌录肯,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吊说,死亡現(xiàn)場離奇詭異论咏,居然都是意外死亡,警方通過查閱死者的電腦和手機颁井,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門厅贪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人雅宾,你說我怎么就攤上這事养涮。” “怎么了秀又?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵单寂,是天一觀的道長贬芥。 經(jīng)常有香客問我吐辙,道長,這世上最難降的妖魔是什么蘸劈? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任昏苏,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘贤惯。我一直安慰自己洼专,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布孵构。 她就那樣靜靜地躺著屁商,像睡著了一般。 火紅的嫁衣襯著肌膚如雪颈墅。 梳的紋絲不亂的頭發(fā)上蜡镶,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天,我揣著相機與錄音恤筛,去河邊找鬼官还。 笑死,一個胖子當(dāng)著我的面吹牛毒坛,可吹牛的內(nèi)容都是我干的望伦。 我是一名探鬼主播,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼煎殷,長吁一口氣:“原來是場噩夢啊……” “哼屯伞!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起豪直,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤愕掏,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后顶伞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體饵撑,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年唆貌,在試婚紗的時候發(fā)現(xiàn)自己被綠了滑潘。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡锨咙,死狀恐怖语卤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情酪刀,我是刑警寧澤粹舵,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站骂倘,受9級特大地震影響眼滤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜历涝,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一诅需、第九天 我趴在偏房一處隱蔽的房頂上張望漾唉。 院中可真熱鬧,春花似錦堰塌、人聲如沸赵刑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽般此。三九已至,卻和暖如春牵现,著一層夾襖步出監(jiān)牢的瞬間恤煞,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工施籍, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留居扒,地道東北人。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓丑慎,卻偏偏與公主長得像喜喂,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子竿裂,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,779評論 2 354

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