ios免簽名開發

用於解決沒有證書調試的麻煩

(備忘)

準備工作:

1. 首先,你要有一個已經越獄的iPhone/iPod/iPad,越獄方法此處不提供。

2. 在用來測試的真機Cydia中添加源:http://apt.weiphone.com,下載適合真機系統版本的AppSync。

3. 在電腦上創建一個證書,用於爲生成的程序簽名。

創建證書

創建證書的過程比較簡單,在電腦上打開“其他-鑰匙串訪問”。然後在菜單欄裏點擊“鑰匙串訪問-證書助理-創建證書...”來打開向導。注意這裏的三個地方,必須要把名稱命名爲iPhone Developer,將類型設定爲代碼簽名,將”讓我覆蓋這些默認值”選中。之後的步驟什麼都不用改,一路點擊“確定”和“繼續”,最後完成這個嚮導就可以了。

4. 如果Xcode在運行狀態,請先 Command+Q將其 完全關閉。然後打開“其他-終端”,我們需要用到一些UNIX命令,可能看起來會比較繁瑣,但是相信我,這可是在每年節省99美金啊!

 進入iPhone SDK目錄,指令如下:

1 cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.0.sdk/

備註:不同版本的Xcode最後的版本號不同。在Xcode 6.0中是 iPhoneOS8.0.sdk ,未來版本可能版本高一些,早期版本的就低一些。請根據實際情況自己改動。(如果實在不知道自己的版本號,可以用“ls”指令查看所有文件。)

 備份原文件,如果電腦設有密碼,系統會提示你輸入密碼(輸入後不會顯示出來,敲回車即可)

1 sudo cp SDKSettings.plist SDKSettings.plist.orig

 編輯配置文件SDKSettings.plist

爲了方便修改,我們可以直接用Xcode打開這個文件。首先要打開這個文件所在目錄:

1 open .

在彈出的Finder窗口中雙擊 SDKSettings.plist ,會啓動Xcode的圖形界面,展開 DefaultProperties 分支,將下面的ENTITLEMENTS_REQUIRED和CODE_SIGNING_REQUIRED兩個屬性改爲 NO

備註:這裏可能會遇到系統提示【“SDKSettings.plist” is locked for editing......】,這是因爲文件讀寫的權限問題,解決辦法如下:

首先,修改文件夾權限,此時我們所在目錄是iPhoneOS8.0.sdk,如果輸入指令“cd ..”返回上級目錄,“ls -al”查看所有文件,會發現系統顯示iPhoneOS8.0.sdk -> iPhoneOS.sdk,這表示iPhoneOS8.0.sdk是指向iPhoneOS.sdk的快捷方式,所以我們要修改的真正文件夾是iPhoneOS.sdk,指令如下:

1 sudo chmod -R 777 iPhoneOS.sdk

然後,修改文件夾內所有文件的讀寫權限:

1 sudo chmod 777 *

現在雙擊打開 SDKSettings.plist 你會發現,剛纔不能修改的屬性可以修改了!

 編輯另外一個配置文件Info.plist

1 cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform

2 sudo cp Info.plist Info.plist.orig

3 open .

在彈出的Finder窗口中雙擊打開 Info.plist 。分別在 DefaultProperties 分支下、 RuntimeRequirements 分支下和OverrideProperties 分支下,共有3處,將全部的 XCiPhoneOSCodeSignContext 修改成 XCCodeSignContext 

備註:同第步,可能會遇到權限問題,修改Platforms 文件夾權限和該文件夾內所有文件的權限 即可,步驟同上。

5. 準備自定義的生成後腳本(此步驟需在聯網狀態下進行)

1 sudo mkdir /Applications/Xcode.app/Contents/Developer/iphoneentitlements

2 cd /Applications/Xcode.app/Contents/Developer/iphoneentitlements

3 sudo curl -O http://www.alexwhittemore.com/iphone/gen_entitlements.txt

4 sudo mv gen_entitlements.txt gen_entitlements.py

5 sudo chmod 777 gen_entitlements.py

6. 修改工程設置

備註:本階段之前的修改配置文件、準備腳本等,只需要做一次。但本階段的操作,對每個需要真機調試的工程都要做一遍。

 禁用Xcode自動的簽名操作

將工程配置“Build Settings”中所有的Code Signing選項全部設爲Don’t Code Sign,如圖。

 添加自定義的生成後腳本 在Build Phases中,點擊左上角的”+“號,添加一個”New Run Script Phase“,輸入以下腳本:

1 export CODESIGN_ALLOCATE=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate

2 if [ "${PLATFORM_NAME}" == "iphoneos" ] || [ "${PLATFORM_NAME}" == "ipados" ]; then

3 /Applications/Xcode.app/Contents/Developer/iphoneentitlements/gen_entitlements.py"my.company.${PROJECT_NAME}" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent";

4 codesign -f -s "iPhone Developer" --entitlements"${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent""${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/"

5 fi

(js腳本不正確會帶來不一樣的錯誤,所以認證的對照寫好的證書腳本

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章