Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1532398
  • 博文数量: 114
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 1357
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-19 18:13
文章分类
文章存档

2010年(8)

2009年(9)

2008年(27)

2007年(62)

2006年(8)

我的朋友

分类:

2010-04-27 16:11:41

北京理工大学  20981  陈罡
上篇文章中提到了在linux下面搭建iphone sdk 3.1.2编译环境的方法。但是那只是hack级别的方法——“可以“工作,但不能“高效”地工作。其实如果是希望做比较“严肃”一些的iphone研究和开发,还是使用mac mini比较好,主要是可以借助于apple提供的xcode工具来很方便地进行单步调试,以及变量和内存查看(这一点太重要了,毕竟打印log这种开发方式对于大多数应用开发者来说都有点太原始了)。

当然,在此之前仍然需要提醒大家,如果公司有条件申请iphone developer的授权(也就是交纳那99美金/年),那自然是最好不过了,可以很轻松地进行真机联机调试(如此奢侈的方法暂且按下不表)。如果希望对iphone开发的投资只到mac mini和iphone 3g/3gs为止的开发者,可以参考偶下面描述的方法(又是“即使自宫未必成功”之类的方法了,呵呵),也完全可以实现真机上的单步调试和运行。

下面就是偶做实验时候使用的步骤(折腾得差点连iphone都要重新刷机,这篇文章真是来之不易阿):

1、下载iphone 3.1.2的sdk(注意,不是3.1.3或者3.2的,那些都是有米人用的)
iphone_sdk_3.1.2_with_xcode_3.2.1__snow_leopard__10m2003.dmg
下载地址参见偶的上一篇文章《iphone 3.1.2开发环境搭建——linux平台》即可。

2、在mac mini上面安装这套sdk(具体方法,不再聒噪)
安装成功后,可以新建一个小程序在iphone的模拟器里面玩玩,确认你的sdk安装没有问题。(当然了,很快就会发现使用xcode是无法生成“iphone device 3.1.2 | release”的,会一直提示codesign error的。)

3、开始破解xcode一体化集成环境:
(1)伪造根证书
第一步,打开Key Access(钥匙串访问)工具(具体位置在“应用程序”->“实用工具”->“钥匙串访问”),如下图所示(Finder里面的路径):

第二步,打开“钥匙串访问”程序左上角菜单中的“证书助理”->“创建证书”,如下图所示:

第三步,利用向导创建根证书(注意,从这里开始,所有的操作务必与偶的操作严格一致,没有提示图的话,请沿用其默认的配置,否则,“即使自宫未必成功”喔,切切!!)。

(a)创建自签名根证书,如下图所示:

(b)电子邮件地址可以随意,但是名称一定要是“iPhone Developer“,如下图所示:

(c)这一步很关键,证书存储位置一定要选择"登录",如下图所示:

(d)证书创建完毕后的样子,不出意外的话,应该如下图所示:

ok,到此为止,伪造的根证书应该已经创建出来了。

(2)开始破解xcode
第一步,运行以下的命令(注意,这里面对于curl的操作,需要连接internet,所以请保证网络连接正常):
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 “\x8f\x2a\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
mkdir /Developer/iphoneentitlements30
cd /Developer/iphoneentitlements30
curl -O
mv gen_entitlements.txt gen_entitlements.py
chmod 777 gen_entitlements.py

第二步,修改iphone os的info.plist文件
文件路径为:/Developer/Platforms/iPhoneOS.platform/Info.plist
使用常规文本编辑器(偶个人是推荐emacs拉,当然vi也可以)为此文件添加如下两项:
PROVISIONING_PROFILE_ALLOWED = NO
PROVISIONING_PROFILE_REQUIRED = NO

第三步,将第二步中的Info.plist文件中的所有“XCiPhoneOSCodeSignContext”替换为 “XCCodeSignContext”
(这一点非常重要,如果不进行此步骤会导致打开项目文件的时候,Xcode崩溃)

到此为止,iphone sdk的签名和xcode的破解已经基本完成,可以开始做实验了。

(3)开始享受破解的胜利果实
第一步、打开Xcode,打开项目,Project->Edit Project Setting,选择“Build”页面,Configurations和Show都选择All。


第二步、找到Code Signing Identity项,删除其子项,并将“Code Signing Identity”赋值为“iPhone Developer”(其实是个选项)。

第三步,找到项目的xxx-Info.plist文件,添加“SignerIdentity”项,其值为“Apple iPhone OS Application Signing”.保存。

第四步、将iPhone接入电脑,不出意外的话,会从Xcode的Window->Organizer中会侦测到你的iPhone。
查看iPhone和你的Xcode识别正常后退出Organizer。

第四步、将编译环境设置为“iPhone Device-3.1.2|Release”,点击"Build and Go",
期间会出现让偶选择签名证书,点选“允许”后,就是“自宫”后的等待。。。

好了,看到手机上出现了久违了的程序,就代表可以进行iphone真机上的调试了。

预祝大家都能够练成神功!

呵呵,又到了“有图有真相”时间:

1、下面是偶测试用的一个open gles的小程序在iphone真机上的运行效果:
(1)应用程序安装上的样子,如下图所示(就是那个白色的图标拉):

(2)程序在手机上运行时候的样子,如下图所示:

2、同样的程序在symbian s60真机上的运行效果(可恨的symbian emulator,不能够在emulator上运行open gles的程序):

3、同样的程序在android平台上的运行效果(呵呵,自然nexus one比较好啦!):


阅读(9121) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~