看了不少文章關(guān)于免99D真機調試的,最終總結一貼可行性方案。
首先iphone設備已越獄(沒(méi)有開(kāi)發(fā)者賬號的前題下,沒(méi)有越獄的iphone是沒(méi)有任何讀寫(xiě)權限的)。
破解過(guò)程:
(一)制作證書(shū)
1. 打開(kāi) Finder->實(shí)用工具 -> 鑰匙串訪(fǎng)問(wèn)
2. 單擊 “鑰匙串訪(fǎng)問(wèn)”選擇 “證書(shū)” 再選擇 “創(chuàng )建證書(shū)”過(guò)程如下圖:
3.證書(shū)名稱(chēng)填寫(xiě):“iPhone Developer” 嚴格填寫(xiě)這個(gè)名字,不要隨便填寫(xiě),然后點(diǎn)擊“創(chuàng )建”。(如圖)










1.修改 xcode SDKsettings.plist文件。
找到 “ /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk ”下得 SDKSettings.plist 文件,修改“Default Properties ”項下面得 “CODE_SIGNING_REQUIRED ”得值為:NO。
修改過(guò)程中會(huì )遇到 系統提示你沒(méi)有修改此文件得權限,會(huì )給你復制一個(gè)副本修改得權利。那么選擇創(chuàng )建副本修改,創(chuàng )建目標位置到“桌面”?,F在它可以允許你修改副本。再在副本中選擇修改“Default Properties ”項下面得 “CODE_SIGNING_REQUIRED ”得值為:NO。
修改好了副本 ,將副本拖拽到 “ /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk ”下 替換原來(lái)得 SDKSettings.plist 文件。這個(gè)時(shí)候會(huì )提示你是否修改替換,
選擇 “是”,然后輸入自己得密碼。修改成功。
2.破解xcode
關(guān)閉xcode狀態(tài)下:
打開(kāi) Finder -> 實(shí)用工具 -> 終端 。
1)在終端中粘貼i下面得代碼:
#!/bin/bash
cd /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneOS\ Build\ System\ Support.xcplugin/Contents/MacOS/
dd if=iPhoneOS\ Build\ System\ Support of=working bs=500 count=255
printf “\x8f\x2a\x00\x00″ >> working
dd if=iPhoneOS\ Build\ System\ Support of=working bs=1 skip=127504 seek=127504
/bin/mv -n iPhoneOS\ Build\ System\ Support iPhoneOS\ Build\ System\ Support.original
/bin/mv working iPhoneOS\ Build\ System\ Support
chmod a+x iPhoneOS\ Build\ System\ Support
2.在聯(lián)網(wǎng)狀態(tài)下 ,繼續在終端上粘貼下面得代碼
mkdir /Developer/iphoneentitlements30
cd /Developer/iphoneentitlements30
curl -O http://www.alexwhittemore.com/iphone/gen_entitlements.txt
mv gen_entitlements.txt gen_entitlements.py
chmod 777 gen_entitlements.py
3.修改”/Developer/Platforms/iPhoneOS.platform/Info.plist”文件
增加兩項:
PROVISIONING_PROFILE_ALLOWED = NO
PROVISIONING_PROFILE_REQUIRED = NO
4.替換“/Developer/Platforms/iPhoneOS.platform/Info.plist”文件,做如下替換(用文本編輯器打開(kāi)):
將所有“XCiPhoneOSCodeSignContext”替換為“XCCodeSignContext”,
說(shuō)明:(非常重要,不進(jìn)行此步驟會(huì )導致打開(kāi)項目文件Xcode會(huì )崩潰報錯退出)保存退出。
5.下面就是去xcode下面修改自己得工程屬性 了
打開(kāi)xcode,打開(kāi)自己得工程。
看到下面得步驟修改下工程屬性就可以了。
1.點(diǎn)擊 項目圖標,找到“Build Settings” 找到 “Code Sign Identity”
按照下面得方式設置一下就可以 了。



1 Code Sign error: a valid provisioning profile matching the application's Identifier 'com.yourcompany.xxxx' could not be found
打開(kāi)Xcode,打開(kāi)你的項目,Project->>Edit Project Setting,選擇”Build”頁(yè)面,Configurations和Show都選擇All,找到Code Signing Identity項,刪除其子項,并將”Code Signing Identity”賦值為”iPhone Developer”(其實(shí)是個(gè)選項)
然后找到你項目的xxx-Info.plist文件,添加”SignerIdentity”項,其值為”Apple iPhone OS Application Signing”.保存。

Xcode真機調試:
將 iPhone接入電腦,在Xcode的Window->Organizer中會(huì )偵測到你的iPhone.查看iPhone和你的Xcode識別正常后退出Organizer,選擇編譯環(huán)境為”iPhone Device-4.2|Release”,點(diǎn)擊”Build and Go”,期間會(huì )出現讓我們選擇簽名證書(shū),點(diǎn)選”允許”后,等待你的iPad/iPhone屏幕點(diǎn)亮就ok了。
你的程序會(huì )自動(dòng)下載到你的iPhone中,可以進(jìn)行真機調試了
Xcode破解完成,或者更準確的講,是配置完成!
打包ipa:
編譯完了的程序是BargainSale.app文件(目錄在文稿->BargainSale->build->Release-iphoneos),我們
需要制作成ipa安裝包,方便安裝在iPad或iPhone上。
第一步,新建一個(gè)文件夾,名字任意。找一個(gè)不大于500*500的jpg圖片,改名為:iTunesArtwork,注意不能有后綴名。
第二步,建立一個(gè)文件夾,名為:Payload,把剛才編譯的BargainSale.app拷貝到這個(gè)文件夾里面。
第三部,修改app里面的Info.plist文件,windows下可以用Pledit.exe編輯,在<dict></dict>節點(diǎn)里面加入:
<key>SignerIdentity</key>
<string>Apple iPhone OS Application Signing</string>
然后選中Payload和iTunesArtwork,右鍵生產(chǎn)壓縮zip文件,比如:BargainSale.zip,把后綴名改為ipa就可以了?,F在可以雙擊BargainSale.ipa文件,看看可以加入到iTunes了。
當你運行程序時(shí),可以通過(guò) window->organizer 看到你得iphone 運行時(shí)打印出來(lái)得Log。
gen_entitlements.txt
#!/usr/bin/env pythonimport sysimport structif len(sys.argv) != 3: print "Usage: %s appname dest_file.xcent" % sys.argv[0] sys.exit(-1) APPNAME = sys.argv[1]DEST = sys.argv[2] if not DEST.endswith('.xml') and not DEST.endswith('.xcent'): print "Dest must be .xml (for ldid) or .xcent (for codesign)" sys.exit(-1) entitlements = """<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"><dict> <key>application-identifier</key> <string>%s</string> <key>get-task-allow</key> <true/></dict></plist>""" % APPNAMEf = open(DEST,'w') if DEST.endswith('.xcent'): f.write("\xfa\xde\x71\x71") f.write(struct.pack('>L', len(entitlements) + 8))f.write(entitlements) f.close()
聯(lián)系客服