天天看點

XCode免證書開發環境XCode免證書開發環境

本文轉自 http://www.189works.com/article-102715-1.html

XCode免證書開發環境

2012-10-28 06:17| 釋出者: fjsorry| 檢視: 312| 評論: 0

摘要: XCode免證書開發環境是本文要介紹的内容,如果你和我一樣,是一名愛好iOS開發的開發者,并且又舍不得花費99美金去購買一個合法的開發License,這篇部落格則非常适合你。如果,您是一位已經獲得Apple開發者證書的開發者 ...

XCode免證書開發環境是本文要介紹的内容,如果你和我一樣,是一名愛好iOS開發的開發者,并且又舍不得花費99美金去購買一個合法的開發License,這篇部落格則非常适合你。如果,您是一位已經獲得Apple開發者證書的開發者,則可以完全無視該篇Blog。

在沒有證書的情況下,開發iOS應用程式隻能在功能有限的模拟器環境中運作你的應用程式(x86環境)。對于那些與硬體平台關系不大的iOS應用程式開發來說,模拟器環境可以模拟大多數功能,但是一旦你的應用需要涉及實際的硬體裝置(比如:攝像頭,感應器等),則模拟器就無法滿足您的開發需求。拜股溝大神所賜,網路上已經早已有開發者用自簽名證書的方式,繞開XCode的證書檢查,可以将XCode編譯的應用程式部署到實際的iOS裝置上進行測試和調試。

Xcode如果不破解,一方面無法真機調試, 也無法編譯真機Release檔案,隻能付費開通Apple開發者賬号,才能申請真機調試。而Xcode進行破解後,接合越獄的iPhone或iPad, 即可免官方證書開發調試了!目前測試對于最新的iOS 4.2 SDK/iOS 4.2.1 SDK的Xcode 3.2.5一樣适用!當然,對iOS 3.2.2/iOS 4.1 SDK的Xcode 3.1.2同樣保持相容。

生成自簽名開發證書

啟動證書鍊管理工具(應用程式->實用工具->鑰匙串通路)建立證書

XCode免證書開發環境XCode免證書開發環境
1.設定證書名稱設定為iPhone Developer(該名稱需要和XCode編譯簽名時使用的證書名稱一緻,下文會提到),身份類型選擇自簽名根證書,證書類型選擇S/MIME (電子郵件),并且在覆寫這些預設值選項上打勾。
XCode免證書開發環境XCode免證書開發環境
選擇繼續制作自簽名證書
XCode免證書開發環境XCode免證書開發環境
2. 設定證書有效期365天(時長不要超過365天)
XCode免證書開發環境XCode免證書開發環境
3. 輸入使用者資訊
XCode免證書開發環境XCode免證書開發環境
4. 選擇密鑰大小和算法(2048位和采用RSA算法)
XCode免證書開發環境XCode免證書開發環境
XCode免證書開發環境XCode免證書開發環境
5. 設定密鑰擴充功能(選擇簽名功能和代碼簽名功能)
XCode免證書開發環境XCode免證書開發環境
6. 禁止基本限制擴充
XCode免證書開發環境XCode免證書開發環境
7. 設定主題裝置用名稱擴充,RFC822輸入郵箱即可
XCode免證書開發環境XCode免證書開發環境
8. 設定鑰匙串類型為登陸類型
XCode免證書開發環境XCode免證書開發環境

至此,自簽名證書建立完畢

Xcode破解

保證Xcode處于關閉狀态,指令行終端,複制粘貼下面的代碼:

  1. #!/bin/bash cd /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneOS\ Build\   
  2.    System\ Support.xcplugin/Contents/MacOS/ dd if=iPhoneOS\ Build\ 
  3. System\ Support of=working bs=500 count=255 printf “\x8f\x2a\x00\x00″ >> working dd if=iPhoneOS\ Build\   
  4.    System\ Support of=working bs=1 skip=127504 seek=127504 /bin/mv -n iPhoneOS\ Build\ System\ Support iPhoneOS\ Build\   
  5.    System\ Support.original /bin/mv working iPhoneOS\ Build\ System\ Support chmod a+x iPhoneOS\ Build\ System\ Support  
然後複制粘貼下面的代碼到指令行終端:
  1. mkdir /Developer/iphoneentitlements30 cd /Developer/iphoneentitlements30 curl -O 
  2. http://www.alexwhittemore.com/iphone/gen_entitlements.txt mv gen_entitlements.txt gen_entitlements.py chmod 777 
  3. gen_entitlements.py ./gen_entitlements.py 

執行完腳本後修改”/Developer/Platforms/iPhoneOS.platform/Info.plist”檔案,做如下修改:

新增如下兩項(告知項目編譯無需證書):

  1. PROVISIONING_PROFILE_ALLOWED = NO 
  2. PROVISIONING_PROFILE_REQUIRED = NO 
  3. 共兩處需要修改,如下所示:  
  4.  <key>ARCHSkey>    
  5.  <string>armv6string>    
  6.  <key>CODE_SIGN_CONTEXT_CLASSkey>   
  7.   <string>XCiPhoneOSCodeSignContextstring>    
  8.   <key>COMPRESS_PNG_FILESkey>    
  9.   <string>YESstring>    
  10.   <key>DEBUG_INFORMATION_FORMATkey>   
  11.    <string>dwarf-with-dsymstring>    
  12.    <key>EMBEDDED_PROFILE_NAMEkey>   
  13.     <string>embedded.mobileprovisionstring>   
  14.      <key>INFOPLIST_OUTPUT_FORMATkey>    
  15.      <string>binarystring>    
  16.      <key>NATIVE_ARCHkey>   
  17.      <string>armv6string>   
  18.  <key>PLIST_FILE_OUTPUT_FORMATkey>   
  19.  <string>binarystring>    
  20.  <strong><key>PROVISIONING_PROFILE_ALLOWEDkey>    
  21.    <string>NOstring>   
  22.    <key>PROVISIONING_PROFILE_REQUIREDkey>   
  23.   <string>NOstring>strong>   
  24.    <key>SDKROOTkey>   
  25.    <string>iphoneos2.2.1string>   
  26.    <key>STRINGS_FILE_OUTPUT_ENCODINGkey>    
  27.   <string>binarystring>         
  28.      <key>CODE_SIGN_CONTEXT_CLASSkey>          
  29.      <string>XCiPhoneOSCodeSignContextstring>          
  30.       <key>DEBUG_INFORMATION_FORMATkey>          
  31.      <string>dwarf-with-dsymstring>          
  32.         <key>EMBEDDED_PROFILE_NAMEkey>          
  33.        <string>embedded.mobileprovisionstring>           
  34.        <key>SDKROOTkey>           
  35.     <string>iphoneos2.2.1string>          
  36.     <strong><key>PROVISIONING_PROFILE_ALLOWEDkey>         
  37.   <string>NOstring>           
  38.  <key>PROVISIONING_PROFILE_REQUIREDkey>     
  39. <string>NOstring>strong> 

加粗部分為要加入的内容。儲存。

然後将該檔案中所有的”XCiPhoneOSCodeSignContext”替換為”XCCodeSignContext”,即去掉中間的”iPhoneOS” 。如果不進行此步,編譯Device Release版本時會報錯:

  1. Code Sign error: a valid provisioning profile matching the application’s Identifier ‘com.yourcompany.xxxx’ could not be found 

1. 使用XCode打開你的項目檔案,在Project->Edit Project Setting中選擇Build頁面,找到Code Signing Identifty選項,将簽名設定成iPhone Developer

2. 然後找到你項目的xxx-Info.plist檔案,添加”SignerIdentity”項,其值為”Apple iPhone OS Application Signing”.儲存。[我加了這一步編譯時就總出錯,不加沒問題,不知道為啥子。。。]

Xcode破解完成,或者更準确的講,是配置完成!

Xcode真機調試

将 iPhone接入電腦,在Xcode的Window->Organizer中會偵測到你的iPhone.檢視iPhone和你的Xcode識别正常後退出Organizer,選擇編譯環境為”iPhone Device-4.2|Release”,點選”Build and Go”,期間會出現讓我們選擇簽名證書,點選”允許”後,等待你的iPad/iPhone螢幕點亮就ok了。

你的程式會自動下載下傳到你的iPhone中,可以進行真機調試了。

Xcode更新破解

如果是在原Xcode的版本上更新到3.2.5,并且之前已經破解過,那麼隻需要再做如下步驟即可:

新增如下兩項(告知項目編譯無需證書):

  1. PROVISIONING_PROFILE_ALLOWED = NO 
  2. PROVISIONING_PROFILE_REQUIRED = NO 
然後将該檔案中所有的”XCiPhoneOSCodeSignContext”替換為”XCCodeSignContext”,即去掉中間的”iPhoneOS” 。如果不進行此步,編譯Device Release版本時會報錯:
  1. Code Sign error: a valid provisioning profile matching the application’s Identifier ‘com.yourcompany.xxxx’ could not be found 
小結:XCode免證書開發環境的内容介紹完了,希望本文對你有所幫助!!!
  1. Xcode開發環境 了解 Xcode 工程
  2. Xcode 4實作基于WebService使用者登入iPhone程式 執行個體
  3. 詳解XCode構造成iOS應用程式如何啟動
  4. Xcode學習筆記 給WindowBase程式添加View
  5. 修改Xcode配置并支援iPhone上dylib工程 執行個體
  6. 淺談Xcode 交叉開發程式設計中選項
  7. Xcode 使用 新手必看