XE6 & IOS开发之免证书真机调试(1):颁发属于自己的App签名证书(有图有真相)
2014-08-25 21:26
网上能找到的关于Delphi XE系列的移动开发的相关文章甚少,本文尽量以详细的图文内容、傻瓜式的表达来告诉你想要的答案。
1.自己给自己颁发证书,用于给App签名。(如果还没有MAC环境,请参照"XE6移动开发环境搭建之IOS篇"进行配置。)
---------------------------------------------------------------
1.在虚拟机下,点一下桌面(星空图随便某个地方),在Finder中选择‘前往‘,‘实用工具‘。
2.找到‘钥匙串访问‘,双击打开。
3.打开后,明显看到现在是没有开发者证书的,既然没有,那我们就给自己颁发一个,我们点击左上角‘钥匙串访问‘。
4.选择‘证书助理‘,‘创建证书‘。
5.我们填入证书名称:iPhone Developer,选择身份类型:自签名根证书,选择证书类型:代码签名,并钩上覆盖默认值。
这里要注意大小写和空格。然后点‘继续‘。
6.由于苹果的App需要用证书来签名,所以证书的来源就显得很重要了,相当于警察查房只看个人身份证一样,所以这里会弹出警告,无视之,我们点‘继续‘。
7.证书有效期,默认即可,我们点‘继续‘。
8.默认即可,这里电子邮件你可以填写你真实的Email地址,使证书更真实一点。我们点‘继续‘。
9.默认即可,我们点‘继续‘。
10.主要是用于程序签名,所以这里保证‘签名‘要钩上,我们点‘继续‘。
11.这里要保证把‘代码签名‘钩上。我们点‘继续‘。
12.默认即可,我们点‘继续‘。
13.默认即可。当然你也可以填一下,让证书更真实。我们点‘继续‘。
14.默认即可,配置完证书了,我们点‘创建‘。
15.点击‘完成‘。
16.这里的列表就多了一项证书。
17.点左上角‘钥匙串访问‘,‘退出钥匙串访问‘。
2.修改Xcode配置文件。
注意:根据本人反复测试,发现第18-35步并不是必须的,涉及Xcode的修改只影响通过Xcode新建项目的真机单步调试。
由于XE6是通过Command Line 连接MAC编译App的,因此跳过了Xcode的自动签名这个过程,
所以,我们有理由相信,在XE6连接MAC编译的情况下,我们只需要完成以上的17个步骤即可以自签名的方式将App运行于真机上。
---------------------------------------------------------------
18.在虚拟机下,点一下桌面(星空图随便某个地方),在Finder中选择‘前往‘,‘应用程序‘。
19.找到‘Xcode‘,鼠标右键点击,选择‘显示包内容‘。
20.双击进入‘Contents‘。
21.双击‘Developer‘。
22.双击‘Platforms‘。
23.双击‘iPhoneOS.platform‘。
24.鼠标右键点击‘Info.plist‘,选择‘打开方式‘,选择‘Xcode‘。
25.找到3处‘XCiPhoneOSCodeSignContext‘,双击他们的值,统一修改为:‘XCCodeSignContext‘。
26.在空白处鼠标右键点击,选择‘Add Row‘。添加一个新项:PROVISIONING_PROFILE_ALLOWED,值为:NO
27.继续在空白处鼠标右键点击,选择‘Add Row‘。继续添加一个新项:PROVISIONING_PROFILE_REQUIRED,值为:NO
28.点击左上角‘Xcode‘,选择‘Quit Xcode‘。
29.关闭Xcode后,我们继续在当前文件夹中,双击‘Developer‘。
30.双击‘SDKs‘。
31.双击‘iPhoneOS6.1.sdk‘,当然了,这里可选择自己需要的SDK版本,因为我这里只安装了6.1。
32.鼠标右键点击‘SDKSettings.plist‘,选择‘打开方式‘,选择‘Xcode‘。细心的观众会发现,Xcode也是一个文件编辑工具哦。
33.找到2处‘CODE_SIGNING_REGUIRED‘,双击它们的值,将‘YES‘修改为‘NO‘。
34.点击左上角‘Xcode‘,选择‘Quit Xcode‘。
35.关闭掉Xcode后,同样我们也将此窗口关闭,点击左上角的红色叉叉。
至此,Xcode修改已完成。
如果需要用Xcode建项目真机调试,这只完成了Xcode修改的第1步,
还有第2步: 给Xcode打上二进制补丁(Xcode4以后不需要),
还有第3步:用脚本文件去阻止Xcode用默认方式签名,
以及第4步:修改每一个Xcode工程文件的签名方式,设置为不签名。
本人认为以上都不需要在XE6里实现,所以不在此讨论,实际情况请各位多测试,如有异议,请将最新结果告知本人。
下一篇,我们将在真机上运行XE6的App.