眾所周知,在Xcode上開發的程序只能在模擬器上運行,如果要放到真機上,需要花99美元購買開發者證書iDP。本文介紹的是上壹代Xcode4.6.3上的演示,為什麽要用上壹代版本?很簡單,ios7沒有實現流行越獄,所以很少有人用越獄ios7系統(大神除外)。為了運行Xcode5,既然沒有開發者證書,也沒有越獄,如果想在真機上免費運行自己的ipa文件,只有ios7越獄是唯壹的出路。所以,在沒有iDP的情況下,如果想在iPhone上調試程序,最終發布ipa進行共享,需要以下步驟:
1.為自己頒發證書,對生成的程序進行簽名;
2.修改工程配置和Xcode的配置文件和二進制文件,防止其驗證和簽名;
3.通過自定義生成步驟用偽造的證書對應用程序進行簽名;
4.用壹點技巧生成ipa文件;
5.妳需要越獄妳的ios6系統的設備,通過Cydia安裝ios4/5/6的AppSync。
工具:iphone4 6.1.2已經完美越獄,MacBook Pro13inch,Xcode4.6.3,plist編輯器(用於編輯Plist文件)。
正式進入正題:
首先,創建壹個證書
打開實用工具-鑰匙串訪問。然後單擊菜單欄中的“鑰匙串訪問”-“證書助理”-“創建證書”,打開向導。第壹步更重要。您必須將名稱命名為iPhone Developer,將類型設置為代碼簽名,並選擇“讓我覆蓋這些默認值”。以下步驟無需更改,只需壹直單擊“確定”和“繼續”即可完成該向導!
其次,修改Xcode的配置文件
1.請先按Command+Q完全關閉Xcode。
2.修改配置文件:
沿著此路徑找到SDKSettings.plist並編輯它:
/Applications/xcode . app/Contents/Developer/Platforms/iphone OS . platform/Developer/SDKs/iphone OS 6.1 . SDK/SDK settings . plist
在以下兩段中,將“是”替換為“否”。
& ltkey & gtCODE _ SIGNING _ REQUIRED & lt/key & gt;
& lt字符串& gt是& lt/string & gt;
和
& ltkey & gt授權_必需的& lt/key & gt;
& lt字符串& gt是& lt/string & gt;
3.按如下方式修改另壹個文件:
沿著此路徑找到Info.plist並編輯它:
applications/xcode . app/Contents/Developer/Platforms/iphone OS . platform/info . plist
將Info.plist中的所有XCiPhoneOSCodeSignContext修改為XCCodeSignContext,分別位於DefaultProperties分支、OverrideProperties分支和RuntimeRequirements分支下。
4.添加文件:
連接到互聯網後,在終端執行:
mkdir/Applications/xcode . app/Contents/Developer/iphone授權
CD/Applications/xcode . app/Contents/開發者/iphone授權
curl-O/iphone/gen _ entitlements . txt
mv gen _ entitlements . txt gen _ entitlements . py
chmod 777 gen_entitlements.py
如果沒有互聯網連接,可以在文件夾/applications/xcode . app/contents/developer下創建壹個iphoneentitlements文件夾,然後在這個文件夾中手動創建壹個gen_entitlements.py文件,並授予其執行權限(命令:sudo)。該文件的內容如下:
#!/usr/bin/env python
導入系統
導入結構
if len(sys.argv)!= 3:
print "用法:% s appname dest _ file . xcent“% sys . argv[0]
sys.exit(-1)
APPNAME = sys.argv[1]
DEST = sys.argv[2]
if not DEST.endswith('。xml ')和notDEST.endswith('。xcent’):
打印“目的地必須是。xml(對於ldid)或. xcent(對於codesign)"
sys.exit(-1)
權利= " " "
& lt?xml版本="1.0 "編碼="UTF-8 "?& gt
& lt!DOCTYPE PLIST PUBLIC "-//Apple//DTD PLIST 1.0//EN " "/DTDs/property list-1.0 . DTD " & gt;
& ltplist version="1.0 " >
& ltdict & gt
& ltkey & gt應用程序標識符& lt/key & gt;
& lt字符串& gt% s & lt/string & gt;
& ltkey & gt獲取任務允許& lt/key & gt;
& lttrue/>;
& lt/dict & gt;
& lt/plist & gt;
" " " % APPNAME
f =打開(DEST,“w”)
if DEST.endswith('。xcent’):
f . write(" \ xfa \ xde \ x 71 \ x 71 ")
f . write(struct . pack(' & gt;l ',len(權利)+ 8))
f .寫(權利)
f.close()
三、修改工程設置(真機調試閃回,請仔細看這壹步,這壹步是關鍵問題)
特別說明:在這個階段之前,您只需要修改配置文件並準備壹次腳本。但是這個階段的操作應該是每個需要真機調試的項目都要做的。
這壹步的主要作用是支持真機調試。如果不做這壹步,仍然可以通過step 5生成ipa運行在真機上,但是不能用Xcode內置的調試器壹步跟蹤運行在真機上的程序。如果您的程序點擊運行調試秒的時間,請檢查這壹步是否正確完成。
1.停用Xcode自動簽名操作。
將項目配置中的所有代碼簽名選項設置為不進行代碼簽名,如圖所示。您可能需要先單擊“全部”來顯示此選項。
2.添加自定義的後期生成腳本
在構建階段中添加壹個階段,在右下角添加構建階段,然後點擊添加運行腳本,進入如下腳本:
export CODESIGN _ ALLOCATE =/Applications/xcode . app/Contents/Developer/Platforms/iphone OS . platform/Developer/usr/bin/CODESIGN _ ALLOCATE
if[" $ {平臺名稱} " = = " iphone OS "]| |[" $ {平臺名稱} " = = " IP ados "];然後
/Applications/xcode . app/Contents/Developer/iphone entitlements/gen _ entitlements . py " my . company . $ { PROJECT _ NAME } " " $ { build _ PRODUCTS _ DIR }/$ { WRAPPER _ NAME }/$ { PROJECT _ NAME }。xcent ";
code sign-f-s“iPhone開發人員”-權利" $ { build _ PRODUCTS _ DIR }/$ { WRAPPER _ NAME }/$ { PROJECT _ NAME }。xcent " " $ { build _ PRODUCTS _ DIR }/$ { WRAPPER _ NAME }/"
船方不負擔裝貨費用
如圖所示:
現在配置完成,可以插上iPhone,重新選擇生成目標,測試在線調試了!如果是第壹次使用此設備進行調試,請在管理器中將設備切換到開發模式(iPhone右側的小綠燈亮起)。
第四,生成IPA文件
如果我的程序調試好了,怎麽發給別人?正常情況下,ipa文件是從Xcode的Organizer導出的,但是我們沒有證書,所以輸出會產生錯誤。我們只能用壹點技巧來完成這個操作。
首先生成作為發布目標的代碼,然後打開項目的輸出文件夾。通常這個目錄是以項目名/build/products/release-iPhone OS開頭的/Users/用戶名/library/developer/xcode/derived data/folder。這個目錄下有壹個xxx.app文件,就是生成的程序。把這個xxx.app拖到iTunes裏,它會出現在應用列表裏,再拖到iTunes列表外(比如拖到桌面),它就變成xxx.ipa了!發送這個。ipa給別人,每個人都可以和妳分享這個程序。