亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

iOS Code Signing: 解惑

系統(tǒng) 2355 0

?

免責(zé)申明(必讀!):本博客提供的所有教程的翻譯原稿均來(lái)自于互聯(lián)網(wǎng),僅供學(xué)習(xí)交流之用,切勿進(jìn)行商業(yè)傳播。同時(shí),轉(zhuǎn)載時(shí)不要移除本申明。如產(chǎn)生任何糾紛,均與本博客所有人、發(fā)表該翻譯稿之人無(wú)任何關(guān)系。謝謝合作!

原文鏈接地址: http://www.raywenderlich.com/2915/ios-code-signing-under-the-hood

?

注:本文由翻譯團(tuán)隊(duì)成員 skingTree翻譯。

教程截圖:

??? 下面是一篇有澳洲墨爾本的一名全職 iOS 開(kāi)發(fā)者 提供的文章。他在論壇上是一個(gè)很摩登的年輕人 – Adam Eberbach 。

  · Bundle identifier

  · provisioning profiles

  · App ID

  · certificate signing request

 對(duì)于新手,的確很難一口氣搞清楚這些東東到底有什么區(qū)別。

  下面我們來(lái)揭開(kāi)它們的神秘面紗,在讀完這篇文章后,你應(yīng)該可以把這些東西聯(lián)系起來(lái),你能夠理解它們是怎么工作,并能夠順利地在 device 上運(yùn)行你的應(yīng)用了。

  當(dāng)然,這里假設(shè)你已經(jīng)是一個(gè) iOS 開(kāi)發(fā)者,擁有 IDP ,并已經(jīng)有一定的 xcode iOS 開(kāi)發(fā)經(jīng)驗(yàn)了。如果你只是剛剛開(kāi)始學(xué)習(xí) iOS ,你可以先看看其它入門(mén)教程。

  好吧,我們開(kāi)始了。

?

它們有多重要?

  Code signing 對(duì)你來(lái)說(shuō),最主要的意義就是它能讓你的 App 在設(shè)備上運(yùn)行。不管是你自己的設(shè)備,甲方客戶(hù)的,還是在 App store 上購(gòu)買(mǎi)你的消費(fèi)者。

  如果沒(méi)有 code signing ,你只可以在模擬器上,或者一臺(tái)越獄過(guò)的機(jī)器上運(yùn)行你的應(yīng)用 ---- 當(dāng)然,僅僅如此是不能滿(mǎn)足我們的。

  模擬器的測(cè)試僅僅是一種初步測(cè)試,模擬器不能替代真機(jī)調(diào)試,因?yàn)椋?

·真正的設(shè)備會(huì)通常比模擬器慢

 模擬器使用的是你的 MAC 機(jī)上的處理器,而一臺(tái)真正的 iphone 可遠(yuǎn)遠(yuǎn)沒(méi)有這種條件。所以如果你不在設(shè)備上真正運(yùn)行,你可能就會(huì)忽略實(shí)際的性能問(wèn)題。

  比如你新建一個(gè)ViewBased應(yīng)用,然后在 viewDidLoad里面加入下列代碼:

      int count=200000;
NSMutableArray * array =[NSMutableArray arrayWithCapacity:count];
for (inti =0; i <count; ++i) {
    [array addObject:[NSString stringWithFormat:@"%d", i]];
} 
上面這段代碼在模擬器上可能1-2秒就能運(yùn)行完,但是在真機(jī)上面(比如iphone 3GS),大約要花7秒左右的時(shí)間。 

    

同理的,模擬器使用你 MAC 上的內(nèi)存,而一臺(tái)真正的 iphone 的內(nèi)存少得多。

  特別是游戲,通常會(huì)使用大量的圖片,占用大量的內(nèi)存。在老一點(diǎn)型號(hào)的機(jī)器上,一個(gè)紋理圖片的大小上限是 24MB ,也就是 1024X1024 8bit 紋理圖。

  內(nèi)存耗盡絕對(duì)是你不想見(jiàn)到的,因?yàn)檎加玫膬?nèi)存超過(guò)一定范圍, OS 會(huì)強(qiáng)行退出你的 app ,對(duì)用戶(hù)來(lái)說(shuō),就認(rèn)為是你的 app 崩潰了。

?

·有些 API 只在設(shè)備上有效

譬如 In-App purchase API ,或者 Instrument 中的 Core Animation 。這些都要在真機(jī)上測(cè)試出來(lái)。(可能以后版本的 iOS 或者 xcode 能夠支持,但畢竟真機(jī)測(cè)試是一種保障)

  總的來(lái)說(shuō),你沒(méi)有在真機(jī)上測(cè)試過(guò),等于你沒(méi)有真的測(cè)試完。

·(譯者注:一些視覺(jué)上的效果在模擬器上看到的可能會(huì)與真機(jī)不一致)

?

Xcode 中有一些懶人的方法:

  在 organizer 的界面中,選中 devices 右鍵 Developer Profile ,你可以看到這樣一個(gè)菜單。

  里面有大部分這篇文章將要講到的內(nèi)容 。

這里你可以 sign in 你的開(kāi)發(fā)者賬號(hào),自動(dòng)登記你的 app 并運(yùn)行到你的 device 上。

  當(dāng)然,如果這樣總是好用的話(huà),這篇文章就沒(méi)有意義了。

  作為一個(gè)開(kāi)發(fā)者,你應(yīng)該知道更多。

Public and Private Keys 公鑰私鑰

 在繼續(xù)剖析之前,我們先簡(jiǎn)單地解析公鑰私鑰。

  這世上有兩種加密方法: symmetric cryptography 對(duì)稱(chēng)密碼和 asymmetric cryptography 非對(duì)稱(chēng)密碼。

  對(duì)于對(duì)稱(chēng)密碼,只有一種 key 。譬如你有一個(gè)密鑰,以及對(duì)應(yīng)的一個(gè)加密過(guò)的信息。

  那只有知道密鑰的人可以解讀這個(gè)信息。

  對(duì)于非對(duì)稱(chēng)密碼,有兩個(gè) key – 公鑰和私鑰。

?   譬如你用某個(gè)私鑰加密一些信息,別人收到這個(gè)信息后可以通過(guò)那個(gè)私鑰對(duì)應(yīng)的公鑰來(lái)加密。這樣他們就可以肯定,這個(gè)信息是從你那里來(lái)的(至少是你加密的)。

  這個(gè)私鑰就相當(dāng)于一個(gè)“簽名”。 (你加的密,就是你簽的字)

  而這個(gè),就是在 iOS code signing 背后的原理。

?

Code Signing Objects

Code Signing 有關(guān)的東西有

  Provisioning Profiles App IDs , UDIDs …

  在這一節(jié),我們會(huì)一個(gè)一個(gè)地解說(shuō)。

  我用 Core Data 繪制了一個(gè)圖表,用來(lái)描述這些對(duì)象之間的關(guān)系。

  這是針對(duì)開(kāi)發(fā)人員的 Development Profile ),發(fā)布人員的圖會(huì)有小小區(qū)別。

?

私鑰 Private Key

Mac OS X 以后, key 由一個(gè)叫做 Keychain app 來(lái)管理。 你可以在 Application\Utilities 中找到。

運(yùn)行 Keychain ,你可以看到在你的名下有哪些公鑰和私鑰。類(lèi)似這樣的:

(這是私隱,要加碼的)

  如果你沒(méi)有看到任何 key 的列表,不用擔(dān)心。在你第一次使用認(rèn)證的時(shí)候, Keychain 會(huì)幫你創(chuàng)建。

  在這里列出的 key 是你的 provisioning 或者 code signing 的基礎(chǔ)。

  你必須有 key 才能 sign code 或者在 App store 中發(fā)布你的 app 。

  如果 key 丟失了?

  你必須把整個(gè)流程重新做一次 因?yàn)闆](méi)有 key ,你的認(rèn)證不再有效,你的 provisioning profile 只會(huì)生成 error 。你會(huì)浪費(fèi)很多時(shí)間,所以,好好保管它。

  如果你沒(méi)有備份過(guò),我建議你馬上把它 export 出來(lái),通過(guò) File\Export Items ,保存在一個(gè)安全的地方,例如一個(gè)很小的分區(qū)中?;蛘咄ㄟ^(guò)你的 Mobile Me 賬號(hào)來(lái)同步保存。

?

有多個(gè) Key

  如果你在不同的 Mac 機(jī)上創(chuàng)建過(guò) account ,你將會(huì)有多個(gè) key 。

  這樣會(huì)帶來(lái)一個(gè)問(wèn)題,在機(jī)器 A 上生成的認(rèn)證,在沒(méi)有私鑰的機(jī)器 B 上會(huì)失效。

  所以,你可以把你所有的 key 復(fù)制到你所有的 Mac 機(jī)上。(這樣就不用煩了)

  或者,我更建議只用一個(gè) Key 。

UDID

  UDID Unique Device Identifier )是區(qū)分物理設(shè)備的唯一標(biāo)識(shí)。

  所有你的 iPhone 肯定有一個(gè)與眾不同的 UDID ,包括你的 iPad 等等。

  通常, UDID 會(huì)是一個(gè) 40 位十六進(jìn)制字符串。

  也就是下圖的 identifier

  如果 App 不是從 app store 上來(lái),你的代碼需要有 UDID 的信息才能運(yùn)行。

  怎么知道你擁有的設(shè)備的 UDID ?有幾個(gè)方法。

  1 如果你的設(shè)備連到 Xcode 的機(jī)器上,你可以在 Organizer 中看到 UDID 。

  2 沒(méi)有 xcode 的朋友也可以,在 iTunes Summary 界面,有 serial number (序列號(hào))的信息,點(diǎn)擊可以看到。

  3 這是最簡(jiǎn)單的方法,在 App Store 中下載一個(gè) Ad Hoc Helper 吧。

?

Certificate 認(rèn)證

  認(rèn)證,就是你的個(gè)人開(kāi)發(fā)者認(rèn)證,或者更華麗地說(shuō):“ Apple Worldwide Developer Relations Certification Authority Certificate ”(這不翻譯了),

  這個(gè)本質(zhì)上就是一些代表著信任 - 授權(quán)的數(shù)據(jù)而已。

  獲取一個(gè)認(rèn)證,你需要子啊 Keychain Access 中生成一個(gè) Certificate Signing Request ,并把它發(fā)給 Apple 。這會(huì)創(chuàng)建一對(duì) 公鑰 - 私鑰(如果還沒(méi)有的話(huà))。

  Apple 收到后會(huì)驗(yàn)證信息,然后給你創(chuàng)建一個(gè)認(rèn)證。

?

App ID

  在 Xcode4 中創(chuàng)建一個(gè)項(xiàng)目,你要提供 Product Name Company Identifier 的信息。

  Product Name ,就是你的 app 的一個(gè)較短的名稱(chēng)。

  Company identifier ,通常會(huì)是一個(gè)反轉(zhuǎn)的 DNS 串,例如: com.mycompanyname

  這兩者合起來(lái),就似乎 Bundle Identifier 。你會(huì)在 Info.plist 中找到。

  對(duì)于每一個(gè)你要發(fā)布的 app ,你需要到 iTunes Developer Center 中注冊(cè)你的 App ID 。如下圖。

  這個(gè)需要與你在 Info.plist 中設(shè)置的保持一致。 ?

Provisioning Profile

  把前面講到的東西合起來(lái):

  · App ID app 的唯一標(biāo)識(shí))

  · UDID (在某臺(tái)設(shè)備上運(yùn)行的唯一標(biāo)識(shí))

  · Certificate (開(kāi)發(fā)者認(rèn)證)

  就是所謂的 Provisioning Profile 。

?

  Provisioning Profile 通過(guò) xcode 或者 itunes 導(dǎo)入到 device 中,或者打包到一個(gè)包含 app profile .ipa 文件中。

  你可以在 iOS Provisioning Portal 中創(chuàng)建你的 Provisioning Profile 。

  新建一個(gè),有一下幾個(gè)步驟:

  ·為 profile 命名,以后你會(huì)在 xcode organizer , Buid Settings 以及其它一些地方中看到

  ·選擇你的 certificate

  ·選擇你的 App ID ,要如 Info.plist 中的一致。

  ·選擇要應(yīng)用到的設(shè)備。通常,我都是把我的設(shè)備全選的。

?

個(gè)人用途的簽名 Signing

  假設(shè)你已經(jīng)有一個(gè)準(zhǔn)備測(cè)試的 App ,而你有 IDP ,并且處理好 Provisioning Profile 的事情了。

  現(xiàn)在你清楚已經(jīng)知道它們的邏輯了,如果你新加入,下面這些是你要做的:

  1 檢查你的公鑰私鑰,為以后檢查方便,起個(gè)好名吧。

  2 Keychain Access 來(lái)創(chuàng)建你的開(kāi)發(fā)認(rèn)證。然后下載 Apple 給你的認(rèn)證,雙擊安裝,然后你可以在 Keychain 中看到了吧。

  3 下載“ Apple Worldwide Developer Relations Certification Authority Certificate ”( WWDR )也是雙擊安裝,也可以到 Keychain 中看到。

  4 檢查你項(xiàng)目的 Bundle ID ,到 Provisioning Portal 中創(chuàng)建一個(gè)一致的 App ID 。

  5 Provisioning Portal 中加入你想要的 UDID 。(全部加上好了)

  6 針對(duì)你的 Certificate 創(chuàng)建 Provisioning Profile, 指定你的 app ID UDID

  7 下載剛剛創(chuàng)建的 Profile ,拖到你的 xcode Organizer 中。

  然后,你就可以 sign 你的 project ,并讓它們?cè)谀愕? device 上運(yùn)行了。

  在 Target – Build Settings ,往下滾動(dòng)到 Code Signing 一節(jié)。

  試試編輯一下 Debug schema ,它適合于團(tuán)隊(duì)協(xié)作:

  在 Automatic ProfileSelector 中選擇“ iPhone Developer ”,你會(huì)看到你的認(rèn)證已經(jīng)自動(dòng)選上了。

  一切都搞定了,連接你的 device ,在 xcode 中選擇 Debug build , build & run 。

  xcode 會(huì)到你的設(shè)備里裝上這個(gè) provisioning profile ,并運(yùn)行你的 App

iOS Code Signing: 解惑


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦?。。?/p>

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 6080欧美一区二区三区四区 | 欧美一级网| 中文国产成人精品久久久 | 国内精品福利在线视频 | 婷婷视频在线 | 国产成a人片在线观看视频 国产成a人片在线观看视频99 | 国产一极毛片 | 这里只有精品在线 | 国产我不卡 | 亚洲香蕉视频 | 成人私人影院在线观看网址 | 成人合集大片bd高清在线观看 | 国产精品视频久久久 | 9191精品国产免费不久久 | 久草在线在线视频 | 天天添天天干 | 天天综合天天添夜夜添狠狠添 | 亚洲综合激情五月色播 | 国内精品伊人久久久影院 | 成人激情开心网 | 韩国网站爱久久 | 日韩午夜在线视频不卡片 | 男人的天堂欧美精品色偷偷 | 日本人又黄又爽免费视频 | ww亚洲ww在线观看国产 | 久久色吧| 天天做.天天爱.天天综合网 | 亚洲国产美女视频 | 久久一本一区二区三区 | 国产91精品一区二区视色 | 久热这里只精品热在线观看 | 模特精品视频一区 | 久久精品国产免费看久久精品 | 亚洲成人观看 | 老司机性视频 | 日本三级日本三级人妇三级四 | 免费看黄色录像 | 99r在线| 久久成人国产精品免费 | 91在线亚洲精品一区 | 另类图片色 |