环境:
- 我这里是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开发了。