我按這個操做在ipad上成功調試了,也沒用裝ssh就能夠了,因此轉 一下html
我用到的步聚:java
3.修改Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS[SDK版本].sdk/SDKSettings.plist文件,將CODE_SIGNING_REQUIRED對應的值設置爲NO.node
4.打開項目,在Xcode右上角的info裏面,選擇Building項,Configuration選擇Release,在Code Signing->Code Signing Identity->Any iOS device設置爲Don’t Code Signspring
5.這時候項目選擇Device就能夠正常編譯經過了xcode
----------------------------------------------網絡
由於嘗試了不少資料.因此這篇不光是轉載了
我把全部嘗試方法和最終步驟都記錄下來.
網上的資料要不是少步驟要不就是太老
我在IOS SDK 4.1下面測試
環境是
Mac OS X 10.6.4
iPhone 1,1 whited00r 3.1.5(firmware 3.1.3)
iOS SDK 4.1 finalapp
測試下來方法1和方法2都不能經過編譯
兩種方法結合起來也不行
後來找到方法3
使用方法3終於能夠編譯經過.產生了release代碼
可是複製到iphone上以後只要執行就馬上退出
在ssh下面執行的時候直接返回Killed
查閱以後感受是簽名仍是有問題,被SpringBoard直接殺掉了
嘗試過在iPhone上執行ldid
可是返回以下的錯誤ssh
codesign_allocate: for architecture armv6 object: ./test malformed object (unknown load command 4)
util/ldid.cpp(582): _assert(0:WEXITSTATUS(status) == 0)
最終使用以下方法關閉iphone證書檢測
sysctl -w security.mac.proc_enforce=0
sysctl -w security.mac.vnode_enforce=0iphone
==========================總結:真正運行本身的app過程=========================
1.iPhone安裝openssl以及openssh,這個方便之後鏈接上來操做.固然用91之類的文件管理也能夠將編譯後的程序放上來ide
2.iPhone的ssh默認密碼是alpine,不要用passwd去改.直接修改/etc/passwd文件和備份.具體方法這裏不說了.
3.修改Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS[SDK版本].sdk/SDKSettings.plist文件,將CODE_SIGNING_REQUIRED對應的值設置爲NO.
4.打開項目,在Xcode右上角的info裏面,選擇Building項,Configuration選擇Release,在Code Signing->Code Signing Identity->Any iOS device設置爲Don’t Code Sign
5.這時候項目選擇Device就能夠正常編譯經過了
6.將文件上傳,這裏使用scp,可使用其餘方法
mac$scp -r [項目名.app] root@[你的iphone的IP地址]/Applications
7.登陸iphone進行操做,給程序可執行權限而且重啓SpringBoard讓程序圖標能夠出現.
mac$ssh root@[你的iphone的ip地址]
iphone$cd /Applications
iphone$chmod +x [項目名.app]
iphone$killall SpringBoard
8.關閉iphone的合法性檢查關閉
iphone$sysctl -w security.mac.proc_enforce=0
iphone$sysctl -w security.mac.vnode_enforce=0
9.執行程序成功
==========================總結:測試過程=========================
1.iPhone安裝openssl以及openssh,這個方便之後鏈接上來操做.固然用91之類的文件管理也能夠將編譯後的程序放上來
2.iPhone的ssh默認密碼是alpine,不要用passwd去改.直接修改/etc/passwd文件和備份.具體方法這裏不說了.
3.修改Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS[SDK版本].sdk/SDKSettings.plist文件,將CODE_SIGNING_REQUIRED對應的值設置爲NO.
4.打開項目,在Xcode右上角的info裏面,選擇Building項,Configuration選擇Release,在Code Signing->Code Signing Identity->Any iOS device設置爲Don’t Code Sign
5.這時候項目選擇Device就能夠正常編譯經過了
6.在Mac OS X中下載ldid,如下使用mac$標識在mac機執行的指令,iphone$標識在iphone中執行的指令
mac$wget http://svn.telesphoreo.org/trunk/data/ldid/ldid-1.0.610.tgz
7.解壓這個包並編譯
mac$tar -zxf ldid-1.0.610.tgz
mac$cd ldid-1.0.610
mac$g++ -I . -o util/ldid{,.cpp} -x c util/{lookup2,sha1}.c
8.進入[項目目錄]/build/Release-iphoneos/
9.使用ldid對應用程序進行簽名
mac$ldid -S [項目名.app]/[項目名]
10.將文件上傳,這裏使用scp,可使用其餘方法
mac$scp -r [項目名.app] root@[你的iphone的IP地址]/Applications
11.登陸iphone進行操做,給程序可執行權限而且重啓SpringBoard讓程序圖標能夠出現.
mac$ssh root@[你的iphone的ip地址]
iphone$cd /Applications
iphone$chmod +x [項目名.app]
iphone$killall SpringBoard
12.在iphone上執行程序就直接退出了.
13.從手機的Cydia上搜索下載ldid,登陸ssh以後執行
iphone$ldid -S [項目名.app]/[項目名]
報錯
codesign_allocate: for architecture armv6 object: ./test malformed object (unknown load command 4)
util/ldid.cpp(582): _assert(0:WEXITSTATUS(status) == 0)
14.從cydia的網站找到ldid官方的方法
只能將檢查關閉
iphone$sysctl -w security.mac.proc_enforce=0
iphone$sysctl -w security.mac.vnode_enforce=0
15.執行程序成功
==========================方法1:製做本身證書=========================
1. 產生證書
由於 XCode 後面的版本都要求應用程式必須經過簽署,也所以你必須要
多花99美圓加入 Developer Program (真是黑呀),反正我又不放到 App Store 賣錢,乾脆本身簽個證書來用不就行了
打開 Key Access 這個工具程式(在應用程式->工具程式內),並創建一個 「iPhone Developer」 名稱的證書(這個名稱不要改,否則你得在專案內改變)
類型選擇」編碼簽名」
輸入憑證資訊
最後選擇存放在」系統」內(不是 「登入」,否則會找不到)
這樣就大功告成了,你已經省下$99了!
2. 專案創建好了後,打開 Project Setting,並在 User-Defined Settings 輸入:
PROVISIONING_PROFILE_ALLOWED = NO
PROVISIONING_PROFILE_REQUIRED = NO
3. 打開 Info.plist,這個檔案主要存放應用程式的相關描述,按右鍵 Add Row,新增 SignerIdentity = 「Apple iPhone OS Application Signing」 (要一樣的,亂輸好像不行)
11. 選擇要使用的設備,在此我們選擇 Device – iPhone OS 2.2,XCode 會幫我們簽署,按下」允許」(不能按」總是允許」)就能夠輸出到你的iPhone了(第一次跑可能會出現 Security policy error,再跑一次
就不會出現了)
==========================方法2:直接生成app=========================
開發安裝環境mac OS,而且有wifi,通過越獄(破解)的iphone或者ipod touch.
下面所提到的scp是mac OS的終端命令.
ssh,ldid 和chmod等是iphone的終端命令行,須要安裝,cydia等工具
直接進行編譯,必會出現錯誤提示:
CodeSign error: no certificate found in keychain for code signing identity ‘iPhone Developer’
下面咱們先跳過Xcode的簽名檢查.打開工程文件夾下的*.xodeproj爲後綴名的文件(右鍵點擊顯示包內容」Show Package Contents」),通常會看到三個文件,以文本方式打開project.pbxproj這個文件,
此時, 打開工程文件夾下*.xcodeproj為後綴名的文件(右鍵點擊, 選擇」Show Package Contents」),搜索iPhone Developer,找到後刪除,一共有2處,而後保存,從新進入Xcode編譯便可生成App程序.生成的結果在build目錄下.
把編譯好的release for device的程序拷貝到iphone
先進入MyApp.app所在的目錄,而後執行以下命令
siu-andrewde-macbook:release-iphoneos siuandrew$ scp -r MyApp.app root@192.168.0.2:/Applications
提示輸入密碼
root@192.168.0.2′s password:
而後開始拷貝.
拷貝完成後再次登入Iphone:
siu-andrewde-macbook:release-iphoneos siuandrew$ ssh root@192.168.0.2
root@192.168.0.2′s password:
登入後執行簽名工做
iPhone:~ root# cd /Applications
iPhone:/Applications root# ldid -S MyApp.app/MyApp
ldid這一步很是重要,注意-S要大寫,耐心等待簽名結束.
簽名完成進行把整個目錄權限設置755
iPhone:/Applications root# chmod +x MyApp.app
設置權限這一步也必不可少,或者用chmod -R 755 MyApp.app
上傳及簽名工做完成,若是iphone 安裝了91關機助手,註銷並修復圖標便可,不然在iphone機子上要刪除installation.plist文件
iPhone:~ root# rm /private/var/mobile/Library/Caches/com.apple.mobile.installation.plist
而後重啓動手機便可看到程序的圖標.
運行你自編譯的App程序.
==========================方法3:不簽名app,使用ldid=========================
若是你不是iPhone開發者,可是剛好有mac和iphone在身邊,又剛好是個喜歡「hello world」的IT民工,那你必定會想在本身的iPhone上hello world一下。因爲你只是玩票,因此確定不會去弄iPhone Development Program ,官方文檔天然沒有任何供你參考的信息,目前網絡上介紹的各類sdk版本的方法大多都已經失效或是混亂,因此發一個簡單的說明:
本文測試環境:Snow leopard 10.6.3 + Xcode 3.2.2 + iPhone 3G(3.1.2固件)
前提條件:在Xcode中已經有能夠在模擬器上正常運行的Hello World程序 + iPhone已經越獄 + 自己是個沒進行過iPhone開發的小白
方案思路:build一個不須要簽名的應用,在mac上用ldid僞造簽名,經過SSH上傳到iPhone上
操做步驟:
sudo vi /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS[SDK版本].sdk/SDKSettings.plist , 把CODE_SIGNING_REQUIRED對應的值設置爲NO。 – 這是告訴Xcode使用這個SDK build時不用必須簽名應用;
在Xcode中修改應用的」info」->」build」 -> 「Release」 -> 「Code Signing Identity」,設置爲」Don’t Code Sign」,選擇構建目標爲」iPhone Device – [SDK版本] | Release」,build應該提示無錯誤。(第一步的配置生效須要重啓Xcode) – 此步構建了一個沒有簽名的app,路徑爲[項目位置]/build/Release-iphoneos/HelloWorld.app
安裝ldid
wget http://svn.telesphoreo.org/trunk/data/ldid/ldid-1.0.610.tgz
tar -zxf ldid-1.0.610.tgz
cd ldid-1.0.610
g++ -I . -o util/ldid{,.cpp} -x c util/{lookup2,sha1}.c
util/ldid 下面就是咱們須要用來僞造簽名的ldid程序了
給程序簽名
ldid -S [項目位置]/build/Release-iphoneos/HelloWorld.app/HelloWorld (注意這裏要寫到.app下面的執行文件)
SSH上傳到iPhone的/Applications 下面,respring一下就能夠看到並使用HelloWorld應用了(SSH應該在你們越獄時都有裝,若是沒有,到Cydia或Rock中都能裝上,不會respring就重啓iPhone)
參考資料:
http://bbs.weiphone.com/read-htm-tid-222380.html
http://www.blogjava.net/sealyu/archive/2010/09/14/331968.html
http://blog.robaggio.net/2010/04/idpiphone.html
http://techxter.com/62/code-signing-iphone-applications-using-ldid/
http://www.saurik.com/id/8