shitou's blog 
Home About Feed | 十人族 MIX BOY 塌客

Category "iPhone"

12
Apr

iPhone上的HelloWorld终于跑起来了 by shitou

13

为了把 HelloWorld的测试程序放在touch上跑起来,已经快搞了一个星期了,今天终于成功了,要泪奔了,哭泣, 查了无数的资料,网上这方面的资料非常少,感觉现在搞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开发了。

 

Tags:

2009-04-12 15:16:07, 3243 reviews

send to mailbox

Your email:

13 Responses

刀光剑影

2009-04-13 08:50:01

恭喜啊,希望你能把你的学习经过写下来,来一个Step-By-Step开发系列,帮助更多人来开发iphone程序,对了 xcode开发环境,和微软的Visual Studio 相比,感觉那个更容易上手,还是各有特色?

青蛙小子

2009-04-13 08:54:19

466,touch都置办齐了啊,买那个iphone开发基础的书了吗?

shitou

2009-04-13 08:59:11

呵呵,谢谢啦,
微软的东西都没怎麽碰过,visual studio没用过,以前都是习惯手写代码的,这种图形界面的IDE就用过Flex Builder, Xcode感觉挺不错的,界面比较明了,还没有正式开始用, 不敢多做评价

shitou

2009-04-13 09:01:58

都齐了,书买了两本,一本就是那个iphone基础开发的,一本是cocoa入门, 这本看的已经差不多了,上个星期466才到手,现在helloworld也跑起来了,算是正式开始了,呵呵

青蛙小子

2009-04-13 10:38:24

我也手握这两本书,xcode还是很好用的,我准备年底买个官方翻新imac,才6998,真吸引人啊。
http://www.apple.com.cn/store/specialdeals/mac.html

论坛上的花生同学公布了自己一个app store上的游戏销售数据,6个月卖20000个,纯利20000美金,还是很吸引人的,咱们的奋斗目标啊.只要努力一切投入都会赚回来的。
http://www.cocoachina.com/wiki/index.php?title=ChocChocPop

test

2009-04-13 10:44:44

楼主。你说的用线连接iphone,用Organizer的办法我也试过。还是不行啊。
还是报错。前面证书啥的我都试过了。也能编译成功。for device2.2的。我的是xcode3.1.2, os10.5.5,iphone2.2,越狱版。
有何办法吗?qq 4760861

shitou

2009-04-13 12:38:01

@青蛙小子
恩,要加油了,主要平时工作太忙了,挤时间不容易啊,哎...

shitou

2009-04-13 12:39:20

@test
哪一步出问题了,报的什么错啊

shitou

2009-04-13 22:04:56

经过测试下面的操作是不用的:

然后再滚动到最上面,选择show下拉选单, 选中User-Defined Setting
点击最下面的齿轮, 选择Add User-Defined Setting, 加入两组数据, 如下:
PROVISIONING_PROFILE_ALLOWED NO
PROVISIONING_PROFILE_REQUIRED NO
关闭当前配置窗口。

l4y

2009-04-16 15:31:48

好样的!加油!

l4y

2009-04-16 15:34:28

很久没来了,但是从你的文章就能感觉到你已经开始了新的领域的学习,你真的很出色,非常有能力有魄力,加油!祝愿你明天会更好!

simin

2009-06-11 15:09:16

成功了!之前‘按照别人的ssh上传加上ldid弄了一个晚上都不行啊!
此外,发布的时候点Build and GO,就可以直接在itouch上运行!

shitou

2009-06-11 16:05:29

@simin
我以前用ldid也是行不通,恭喜啊

 

TOP

Tags

tenerer MooseFS gearman-ruby Gearman MongoDB MochiChat TCP U-ka saegusa IN db command Mai Kuraki Norah Jones log iPhoneException ACG Mac Safari objective-c CouchDB LVS AJAX debian 推荐 AMQP google mail bug gettext Erlang 北京 iptables 架构 tips mysql backup function 我看 postfix 监控 SEO cache Etag memcache thread 进程 线程 无锡 yield file column mixboy xml rss gems ruby shitou shell lighttpd 安全 csrf 公司 nginx linux 模块 apache webserver 朋友 大学 生活 尼古拉斯凯奇 movie 文件同步 笑笑 歌词 auto complete plugin rails music ubuntu blog

Category

  • iPhone[17]
  • Erlang[8]
  • google[9]
  • 生活[41]
  • 音乐[11]
  • 电影[11]
  • linux[24]
  • web server[6]
  • mail server[3]
  • cluster[1]
  • system manage[8]
  • ruby[18]
  • ruby on rails[27]
  • 开源[3]

Episode

  • MochiChat
  • iPhoneException
  • shell
  • thread
  • memcache

Recent Comments

  • mess assfilled, soderman http://gerero.centerbl...
  • croydon hoes, unlike http://zewero.centerblog.n...
  • Best Site good looking
  • Wonderfull great site
  • very best job
  • felony okcupid, bins http://biiili.centerblog.n...
  • passage mom tube, animosity http://zewero.cente...
  • this is be cool 8)
  • i'm fine good work
  • Good crew it's cool :)

Popular Posts

  • 准备开始学习Erlang了(恶狼, 二郎..)
  • MySQL Innodb备份
  • Lighttpd配置参数
  • iPhone上的HelloWorld终于跑起来了
  • Etag和Expire

Recommended Posts

  • 再次被和谐-_-
  • 十人族: 上线了
  • MooseFS vs. NFS
  • Mochichat新版本上线
  • Gearman
  • MongoDB入门
  • find使用非业余研究
  • MochiChat: 一个基于erlang的web聊天室(beta)
  • /dev/shm和swap的区别
  • gen_tcp的packet参数
  • Beauty - Mai Kuraki
  • awk多维数组
  • We Lost Google.cn
  • Erlang TCP Server例子
  • Mai Kuraki -永远より ながく

Friends' blogs

  • levy
  • sphance
  • andreas

Login

   注册

留言 查看留言

留言

   取消

留言 查看留言


Statistics

  • 访问次数: 88208
  • 今天访问: 4
  • 日志: 187
  • 评论: 516
  • 音乐: 9
  • 用户: 495


 

just DO NOT support IE

close