2010年8月3日 星期二

JailBreak~8: 製作 Xcode 3.2.4 假認證,將自己的 Apps 放到 iPhone 上運行(iOS 4.1)

更新日期: 2010/10/18
適用範圍: Xcode 3.2.1 ~ Xcode 3.2.4 (只需更改適用的版本目錄位置)
參考來源: Xcode 3.2.1 假認證,將自己的Apps放上iphone運行
http://xspace.uwantx.com/space.php?uid=1&do=blog&id=264

一. 環境:
1. iOS 4.1 (JailBreak)
2. Xcode Version 3.2.4, 64 bit
3. Mac OSX 10.6.4 Snow Leopard

二. 步驟:
1. 在 Mac OS X 上, 開起終端機(Terminal), 輸入﹕
(1). cd /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.1.sdk/
(2). sudo cp SDKSettings.plist SDKSettings.plist.backup (會要求輸入密碼)
(3). sudo vi SDKSettings.plist

2. 承上, 找到:

CODE_SIGNING_REQUIRED
YES

…. 與 ....

ENTITLEMENTS_REQUIRED
YES
=> 將 YES 改成 NO 後, 保存退出(按 esc 後輸入 :wq ).

3. 承上, 然後輸入﹕
(1). cd /Developer/Platforms/iPhoneOS.platform/
(2). sudo cp Info.plist Info.plist.backup
(3). sudo vi Info.plist
=> 找到所有的 XCiPhoneOSCodeSignContext(有3個), 並將其改成 XCCodeSignContext

4. 承上, 然後輸入﹕
(1). cd ~/Desktop
(2). vi script (輸入 i 鍵,進入文本修改狀態)
(3). 將下面的內容複製到終端中 (Terminal)

#!/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 “\xc3\x26\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

(4). 保存退出(按 esc 後輸入 :wq ).
(5). chmod 777 script

(6). 執行 ./script, 可看到類似以下的輸出: (如果沒有的話可以嘗試 sudo ./script)
223+1 records in
223+1 records out
111648 bytes transferred in 0.071028 secs (1571887 bytes/sec)
0+0 records in
0+0 records out
0 bytes transferred in 0.000009 secs (0 bytes/sec)

5. 調整 Xcode 的設定:
(1). Project > Edit Project Settings > Build
(2). 承上, 將 Code Signing 項目下的 Any iPhone OS Device 設定改成: Don’t Code Sign
(3). 於左上角的編譯環境, 選擇 Device, 接著執行 Build and Run 即可將 App 安裝到 iPhone 上.
(4). iPhone 上如果有裝 AppSync for OS 4.0+ (參考: JailBreak~6: 讓應用程式 (.ipa / .app) 可直接透過 iTunes 安裝) 的話, 亦可將 Xcode 該專案實體目錄下的 build > Debug-iphoneos > xxx.app 檔案, 直接 copy 拖曳到 iTunes 應用程式內, 接著執行 iPhone 的同步, 就會安裝到 iPhone 機器上了.

三. 錯誤處理:
當 Xcode 出現以下訊息: Error Starting Eexcutable: no provisioned iOS device is connected.
並且在 Xcode 左上方 "Action" 旁的下拉式選單中, Active Executable 項目顯示為: no device available.

解決方式: 執行 Xcode 的 Window > Organizer:
在 Device 下點選自己的 iPhone 名稱, 接著按下 "Using for Development" 按鈕.

四. 備註:
1. 可能是因為之前作過 Xcode 3.2.3 假認證後, 將我的 iPod Touch 從 iOS 4.0 升級到 iOS 4.1 並 JB 後, 再安裝新版的 Xcode 3.2.4 才造成此問題的吧.

2.
若遇到編譯舊的 project 產生 "Base SDK Missing" 訊息, 請參考:Xcode 筆記01 的 "3." 項目.

10 則留言:

  1. 你好:
    我的iphone ios是4.0.1,依照你上面的步驟做,電腦顯示
    "no provisioned iphone OS device on connected"
    不知道這是哪裡出問題?

    回覆刪除
  2. 你好:

    我的 iPod Touch 在 JailBreak iOS 4.1.0 後, 也遇到了類似的問題, 請參考本篇新增的 "三. 錯誤處理" 與 "四. 備註 1." 部份, 希望對你的問題有幫助.

    回覆刪除
  3. 您好:)
    我們的xcode上出現了"CodeSign error: code signing is required for product type 'Application' in SDK ' Device - iOS 4.1'" 可以請問您這是哪裡出問題了嗎?
    非常謝謝!!!

    回覆刪除
  4. 您好~
    我之前是沒有遇到這個問題, 所以我作了個測試:
    將 Base SDK 改成 iOS Device 3.2 (而我的 iPod Touch 是 iOS 4.1), 然後執行 "Build and Run", 出現以下結果:

    CodeSign error: code signing is required for product type 'Application' in SDK 'Device - iPhone OS 3.2'

    .... 所以, 我猜你那一台 iPhone 的 iOS 應該不是 4.1

    回覆刪除
  5. 真是謝謝你快速的回覆:)
    不過我們的ipod touch設定中的版本與cydia顯示的版本都是4.1沒錯> < 還是我們應該再JB一次?
    我們也試過使用Appsync,沒有成功,iTune顯示應用程式未簽署.
    現在應該做哪方面的嘗試呢?
    非常謝謝!

    回覆刪除
  6. Hi ~
    試試:
    Xcode > Project > Edit Project Settings:

    Code Signing 項目:

    將 "Code Signing Identity" 與 "Any iOS Device" 的 Value 皆選擇: Don't Code Sign

    回覆刪除
  7. 真是太謝謝你了! 剛剛再試一次莫名其妙的成功了:D
    對了!你的步驟寫得好詳細:) 幫助很大!

    回覆刪除
  8. 不好意思,在xcode4裡找不到
    Xcode > Project > Edit Project Settings:
    Code Signing 項目:
    請問我該怎麼辦?

    回覆刪除
  9. Xcode 4 請參考:

    I touchs: Xcode 4 Developing for a Jailbroken iOS Device

    http://itouchs.blogspot.com/2011/02/xcode4-developing-for-jailbroken-iphone.html

    回覆刪除

注意:只有此網誌的成員可以留言。