如果你不是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上
操作步骤:
资料参考:
本文测试环境: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)
资料参考:
- iPhone SDK 3.1.2 免 iDP 證書 實機測試 上傳教學
- iPhone开发进阶(4) — 使用Makefile自动编译iPhone程序 (按照这篇文章的做法,可以将编译、伪造签名、上传iPhone一步完成,大家可以继续follow研究)
