为了把 HelloWorld的测试程序放在touch上跑起来,已经快搞了一个星期了,今天终于成功了,要泪奔了,
, 查了无数的资料,网上这方面的资料非常少,感觉现在搞iphone开发的好像都直接花99刀搞定了,没人关注怎样在jailbreak的iphone上来运行测试app了,shitou就等有拿得出手的app了再花那99刀吧
下面是怎样在jailbreak的iphone上运行HelloWorld的完整过程:
环境:
说明:
开始:
修改文件/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开发了。
|
刀光剑影
|
|---|
| 恭喜啊,希望你能把你的学习经过写下来,来一个Step-By-Step开发系列,帮助更多人来开发iphone程序,对了 xcode开发环境,和微软的Visual Studio 相比,感觉那个更容易上手,还是各有特色? |
|
青蛙小子
|
|---|
| 466,touch都置办齐了啊,买那个iphone开发基础的书了吗? |
|
shitou
|
|---|
|
呵呵,谢谢啦, 微软的东西都没怎麽碰过,visual studio没用过,以前都是习惯手写代码的,这种图形界面的IDE就用过Flex Builder, Xcode感觉挺不错的,界面比较明了,还没有正式开始用, 不敢多做评价 |
|
shitou
|
|---|
| 都齐了,书买了两本,一本就是那个iphone基础开发的,一本是cocoa入门, 这本看的已经差不多了,上个星期466才到手,现在helloworld也跑起来了,算是正式开始了,呵呵 |
|
青蛙小子
|
|---|
|
我也手握这两本书,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
|
|---|
|
楼主。你说的用线连接iphone,用Organizer的办法我也试过。还是不行啊。 还是报错。前面证书啥的我都试过了。也能编译成功。for device2.2的。我的是xcode3.1.2, os10.5.5,iphone2.2,越狱版。 有何办法吗?qq 4760861 |
|
shitou
|
|---|
|
@青蛙小子 恩,要加油了,主要平时工作太忙了,挤时间不容易啊,哎... |
|
shitou
|
|---|
|
@test 哪一步出问题了,报的什么错啊 |
|
shitou
|
|---|
|
经过测试下面的操作是不用的: 然后再滚动到最上面,选择show下拉选单, 选中User-Defined Setting 点击最下面的齿轮, 选择Add User-Defined Setting, 加入两组数据, 如下: PROVISIONING_PROFILE_ALLOWED NO PROVISIONING_PROFILE_REQUIRED NO 关闭当前配置窗口。 |
|
l4y
|
|---|
| 好样的!加油! |
|
l4y
|
|---|
| 很久没来了,但是从你的文章就能感觉到你已经开始了新的领域的学习,你真的很出色,非常有能力有魄力,加油!祝愿你明天会更好! |
|
simin
|
|---|
|
成功了!之前‘按照别人的ssh上传加上ldid弄了一个晚上都不行啊! 此外,发布的时候点Build and GO,就可以直接在itouch上运行! |
|
shitou
|
|---|
|
@simin 我以前用ldid也是行不通,恭喜啊 |

just DO NOT support IE