了把 HelloWorld的測試程式放在touch上跑起來,已經快搞了一個星期了,今天終于成功了,要淚奔了,
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiYWan5SeyNWL5VGbp12cvw1Ztl2LcNnbvlGdv1WZvw1cul2Z1xGcvwVZj12X55Wa09CXzRHcpJ3YzFmdhp2LcV2ZhB3LcVWbus2bjNmL3d3dvw1LcpDc0RHaiojIsJye.gif)
, 查了無數的資料,網上這方面的資料非常少,感覺現在搞iphone開發的好像都直接花99刀搞定了,沒人關注怎樣在jailbreak的iphone上來運作測試app了,shitou就等有拿得出手的app了再花那99刀吧
下面是怎樣在jailbreak的iphone上運作HelloWorld的完整過程:
環境:
- 我這裡是touch 2.2.1, jailbreak, iphone一樣
- Max OS 10.5.x, 官方SDK, Xcode 3.1.2
- 如果你已經jailbreak了,我想你肯定已經替換了MobileInstallation了,jailbreak的iphone沒有替換MobileInstallation是沒有任何意義的,你還是任何破解程式都運作不了,如果真的沒有替換,就自己先搜下MobileInstallation吧,這裡不說了。
說明:
- 下面的步驟有的地方操作可能有重複,shitou還沒有一一測試哪些是不必要操作的,不過你還是老老實實的按照下面的步驟執行吧,不然運作不起來就痛苦了。
- 需要修改的檔案,修改前切換成root使用者并先做個備份,cp file fle.bak 就行了。
開始:
修改檔案/Developer/Platforms/iPhoneOS.platform/Info.plist, 共兩處需要修要,如下所示:
<key>ARCHS</key>
<string>armv6</string>
<key>CODE_SIGN_CONTEXT_CLASS</key>
<string>XCiPhoneOSCodeSignContext</string>
<key>COMPRESS_PNG_FILES</key>
<string>YES</string>
<key>DEBUG_INFORMATION_FORMAT</key>
<string>dwarf-with-dsym</string>
<key>EMBEDDED_PROFILE_NAME</key>
<string>embedded.mobileprovision</string>
<key>INFOPLIST_OUTPUT_FORMAT</key>
<string>binary</string>
<key>NATIVE_ARCH</key>
<string>armv6</string>
<key>PLIST_FILE_OUTPUT_FORMAT</key>
<string>binary</string>
<key>PROVISIONING_PROFILE_ALLOWED</key>
<string>NO</string>
<key>PROVISIONING_PROFILE_REQUIRED</key>
<string>NO</string>
<key>SDKROOT</key>
<string>iphoneos2.2.1</string>
<key>STRINGS_FILE_OUTPUT_ENCODING</key>
<string>binary</string>
<key>CODE_SIGN_CONTEXT_CLASS</key>
<string>XCiPhoneOSCodeSignContext</string>
<key>DEBUG_INFORMATION_FORMAT</key>
<string>dwarf-with-dsym</string>
<key>EMBEDDED_PROFILE_NAME</key>
<string>embedded.mobileprovision</string>
<key>SDKROOT</key>
<string>iphoneos2.2.1</string>
<key>PROVISIONING_PROFILE_ALLOWED</key>
<string>NO</string>
<key>PROVISIONING_PROFILE_REQUIRED</key>
<string>NO</string>
加粗部分為要加入的内容。儲存。
修改另一個檔案/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.2.1.sdk/SDKSettings.plist, 根據你目前的開發版本進入具體的版本号目錄,修改該檔案中所有*_REQUIRED定義的行,把對應的值,即下一行的值改成NO, 儲存退出。
下面開始建立自己的授權key, 這個官方有具體的步驟怎樣操作的,參考這裡:摸我, 把第一部分 Obtaining a Signing Identity 看完就行了。 在建立的第一步給key命名時最好填iPhone Developer。
然後就可以打開Xcode了,建立一個新項目,建立一個簡單的HelloWorld, 然後就是關鍵了:
選擇Project -> Set Active SDK -> Device - 2.2.1
你還可以設定目前的開發模式(Project -> Set Active Build Configuration)是Debug還是Release, 兩種不同的模式配置檔案也是不一樣的,這裡選擇的是Debug
在Group & Files下你的HelloWorld項目上點右鍵,點Get Info, 打開項目的配置檔案,選擇Build選單,
滾動到Code Signing部分, 點開Code Signing Identity, 設定成如下所示:
Any iPhone OS Device 值為 iPhone Developer
後面的iPhone Developer就是你剛建立的key的名稱。
然後再滾動到最上面,選擇show下拉選單, 選中User-Defined Setting
點選最下面的齒輪, 選擇Add User-Defined Setting, 加入兩組資料, 如下:
PROVISIONING_PROFILE_ALLOWED NO
PROVISIONING_PROFILE_REQUIRED NO
關閉目前配置視窗。
下面展開HelloWorld -> Resources -> Info.plist
編輯Info.plist, 增加一項:
SignerIdentity 值為 Apple iPhone OS Application Signing
儲存。
然後就可以build了, Build -> Build, 中間會提示你是否允許使用你剛建立的key, 當然允許了,此時Xcode視窗的最下面會報告Build的狀态,如果出現紅色的error的話, 說明你剛才的操作有問題,黃色的代表警告,可能會出現:
CodeSign warning: provisioning is not applicable for product type 'Application' in SDK 'Device - iPhone OS 2.2.1'; ignoring...
這個警告不用管它,隻要出現Build succeeded就行了,
最後就是把HelloWorld.app放到iphone上了,這裡你可以使用ssh的方法複制到iphone的/Applications下,不過這裡使用這個方法并沒有成功,即使使用ldid進行簽證也不行,是以就放棄使用ssh這個方法了,你應該:
首先連接配接你的iphone或者touch, 然後在Xcode下, Window -> Organizer, 這時你的iphone或者touch會出現在視窗裡,點選它, 下面的Applications中會顯示你現在已安裝的所有app, 點選+按鈕,選擇剛才已經編譯成功的HelloWorld.app,在HelloWorld/build/Debug-iphoneos下邊, 然後就傳到你的iphone/touch上了,現在就可以在你iphone/touch上運作HelloWorld了,呵呵,大功告成, 下面就可以正式你的iphone開發了。
scp -r /directory/where/you/have/stuff/filename [email protected]##:/directory/where/you/want/stuff/filename
ssh 192.168.0.xx -l root
cd /Applications
ldid -s xxx.app
chmod 775 xxx.app