首页 > 代码库 > Xcode发布程序到调试机

Xcode发布程序到调试机

XCode发布App到调试机

 

 

今天我们介绍如何用XCode发布我们开发的App到我们自己的机子上(如何发布到App Store不在本文讨论范围内)。我们将用XCode写一个小的测试程序,分别在模拟器和真机上测试。注意在真机测试前,你必须先购买苹果的iOS开发者证书(99刀)。具体购买流程可以参考这里:http://blog.csdn.net/htttw/article/details/7939405

我们以iPod为例介绍。

 

 

 

1.

首先我们要创建一个本机密钥。不过还需要先设置一下Key Chain Access。打开Applications/Utilities/Key Chain Access的Preferences,将Certificates中的OCSP和CRL都关闭,如下所示:

 

 

 

2.

然后打开Key Chain Access:

 

 

 

选择Keychain Access菜单的Certificate Assistant/Request a Certificate From a Certificate Authority...,如下所示:

 

 

 

3.

输入你的邮件和名称,注意选择Save to disk,并把Let me specify key pair information勾选上,然后点Continue:

 

 

 

4.

保持Key Size和Algorithm默认就可以了,点击Continue,选择保存位置。至此我们的本机密钥已经生成完毕,是一个以.certSigningRequest结尾的文件:

 

 

 

5.

下面我们要将这个密钥文件上传到苹果服务器:

登陆到 developer.apple.com,在右边有一个 “iOS Provisioning Portal”:

 

 

点进去,如下所示:

 

 

选择左边栏第二项Certificates,然后点Request Certificate申请一个Certificate,如下所示:

 

然后点击Choose File,选择我们之前创建好的本机密钥文件,之后点Submit:

 

 

 

 

6.

片刻之后刷新本页,就会在原来空的Development Certificates中生成一个新的Certificate:

 

注意到右边Status里显示的是Pending Issuance,因为我们还没有下载WWDR,点击“click here to download now”即可下载。下载完成后双击该文件,点Add开始安装:

 

 

 

Add之后再次刷新之前的页面,现在Download链接出现了:

 

下载这个文件,是一个.cer文件。

 

 

 

 

7.

双击下载的.cer文件,同样点Add开始安装:

 

 

 

 

下面我们要开始添加设备了:

 

8.

打开XCode,然后连接iPod到计算机,XCode会自动弹出Organizer窗口,如果版本匹配的话就会如下所示:

 

 

复制设备的Identifier(40位的十六进制数)。

 

 

 

9.

回到之前的IDP Provisioning Portal页面,选择左边栏第三个的Devices:

 

 

点击Add Devices,如下:

 

 

输入Device Name和Device ID(前者开发者可以自定,后者即先前在XCode中获取的设备的Identifier),然后点Submit

 

 

 

 

10.

设备注册完成后,回到之前的IDP Provisioning Portal页面,选择左边栏第四个的App IDs(一般一个App ID对应一个应用程序):

 

 

点击New App ID,如下所示:

 

 

填写App ID时,Description部分可以由开发者随意填写,但只能是字母或数字(空格也不行);而“Bundle Identifier”的填写则相当重要,如果此信息填写不正确,则无法完成真机测试应用程序。这里具体有两种写法。具体看下苹果公司提供的一个用例“com.domainname.appname”。命名需要按照此规范填写。第一个“.com”是必须按照苹果公司给的样式填写的,而“domainname”则需要用户自定义填写,这部分信息可以由开发者随意填写,但苹果公司推荐用公司的域名。最后一部分则表示你需要测试的应用程序的名字,比如用XCode创建了一个叫app的应用程序,那么这部分就填写app。当然也可以用“*”号代替,则表示该App ID可以用于任何com.domainname.*的程序。本文推荐使用第二种。如下图所示:  

 

之后点Submit即可。

 

 

 

 

11.

App ID创建完成后,回到之前的IDP Provisioning Portal页面,选择左边栏第五个的Provisioning(这个Provisioning会告诉XCode是否允许将应用程序下载到真机上):

 

由于我们之前没有创建过Provisioning,因此是空的

 

 

点击New Profile,Profile Name可以任意(同样只能是字母或数字),同时勾选之前创建的Certificates,在下拉框中选择之前创建的App ID,并勾选之前创建的Devices,然后点Submit:

 

 

 

稍等片刻,刷新页面,就会出现新生成的Profile文件,点击Download下载该Profile文件,是一个.mobileprovision文件:

 

12.

打开XCode,双击刚才下载的.mobileprovision文件,就会在XCode的Organizer窗口中看到如下结果,说明我们之前生成的Profile是合法的:

 

 

 

至此,我们的调试机与XCode之间的连接设置完毕。

 

 

 

 

下面我们用XCode新建一个测试程序,放在我们的iPod上运行:

 

13.

我们创建一个Single View Application,名称是Test:

 

 

 

 

 


14.

在主页面添加一个按钮,点击它之后就会弹出一个Alert窗口,代码如下:

 

[cpp] view plaincopy
  1. -(IBAction)btnAlert:(id)sender  
  2. {  
  3.     NSString * str = @"您按下了Press按钮";  
  4.       
  5.     UIAlertView * alterview = [[UIAlertView alloc] initWithTitle:@"" message:str delegate:nil cancelButtonTitle:nil otherButtonTitles:@"确定", nil];   
  6.       
  7.     [alterview show];     
  8.     [alterview release];     
  9. }  



 

界面文件如下:

 

 

 

 

15.

将按钮和btnAlert连接起来。注意到第14步中的代码在XCode中是错误的,提示“release is unavailable ....”

 

解决办法如下:

单击左边栏的顶层项目目录,在中间栏的Targets栏选择Test,设置右边的Objective-C Automatic Reference Counting为NO(可以在右上角搜索):

 

 

 

16.

在XCode左上角选择iPhone 5.1 Simulator(默认是iPad 5.1 Simulator):

 

 

点左边的三角按钮运行,可能会弹出下面的对话框:

 

 

只要在终端输入下面的命令就不会再弹出该对话框了:

 

[plain] view plaincopy
  1. sudo /usr/sbin/DevToolsSecurity --enable  



 

 

17.

模拟器中的结果如下:

点击按钮,弹出Alert对话框:

 

 

 

 

 

18.

下面终于到了最激动人心的时刻了,我们要下载到我们的iPod真机上运行:

首先要设置Test-Info.plist中的Bundle identifier为你在第10步创建的Bundle identifier,必须要一致,否则真机无法运行!

 

 

然后在项目设置中选择Code Signing Identity(也可以在左上角搜索),改为“iPhone Developer”:

 

 

 

 

19.

然后在XCode左上角选择你的真机设备,如下所示:

 

 

点左边的三角按钮就开始下载到真机运行了:

不过可能还会弹出下面的对话框:

 

选择Always Allow就可以一劳永逸了。

 

 

真机运行结果:

初始界面:

 

 

按下了Press按钮:

 

 

同时我们的真机上也已经安装好了test:

 

 

至此,从申请证书到下载到真机运行的完整流程介绍完了,大家也可以试一试哦~~

 

 

 

以上内容可以参考:

http://blog.sina.com.cn/s/blog_68e753f70100r3w5.html

和 

http://iphone.tgbus.com/dev/iosdev/201205/20120516171253.shtml

 

写的都非常详细。

 

完成

Xcode发布程序到调试机