IOS - 真机测试
转:版权声明:本文由本人亲自一步步完成,并细心排版生成,望广大同仁尊重一下本人的劳动成果,转载请注明出处,原文地址http://my.oschina.net/joanfen/blog/167730
一、真机调试所需材料说明
在申请真机调试证书之前,先对苹果真机调试所需的文件进行说明:
|
苹果真机调试需要证书(Certificates)和描述文件(Provisoning Profiles) 1、证书(Certificates) 通过苹果自带的钥匙串生成后上传到Developer中再生成来完成 2、描述文件(Provisoning Profiles) 生成描述文件时需要选择App ID(包含Bundle,必须与你程序的bundle保持一致,为了能同时调试多个程序,一般bundle填写时末尾用*号代替,后文会具体说明)选择证书(Certificates)及设备(Devices)三样东西 所以如果想要真机调试成功,就必须App ID,证书(Certificates),描述文件(Provisoning Profiles),设备(Devices ),及你所要调试程序的Bundle Identifier保持一致 |
二、进入申请界面
打开iOS Dev Center,选择Sign in,登陆(至少99美元账号),登陆之后在网页右边找到iOS Developer Program,选择Certificates,Identifiers & Profiles,选择Identifiers

三、添加App ID
选择Identifiers->App IDs,在右侧选择添加按钮添加

App ID由用.符号分开的两部分组成,在默认情况下,App ID的前缀为你的团队ID,后缀被定义为一个bundle ID的搜索字符串,AppID的每一个部分对你的应用程序都有不同而且很重要的用途
1、App ID Description:这部分只是你ID的一个代号,只需填写一个自己能分辨的名称即可,在后面申请证书和描述文件中会涉及到选择项

2、App ID Prefix:这部分是Team ID,系统默认,无需填写
3、App ID Suffix:这部分是App ID后缀,可选择Explicit App ID或者Wildcard App ID
3.1、Explicit App ID
Explicit App ID:如果你打算将应用程序中加入Game Center,或在应用中使用应用内购买,进行数据保护,使用iCloud,或者想要给你的应用程序一个唯一的配置文件,你就必须申请Explicit App ID。
要创建Explicit App ID,在下面的框中输入一个唯一的字符串,这个字符串必须与你的应用程序的Bundle ID匹配,苹果推荐使用 com.你的公司名称.app名称作为你的Bundle ID,如果是选择Explicit App ID,Bundle ID中 不能含有*号

3.2、Wildcard App ID:通用App ID,只需使用com.oschina.*的格式即可匹配多个应用,本文以通用型为例
Wildcard App ID:可以让你用一个App ID来匹配多个App,想要创建一个通用App ID,在输入Bundle ID末尾使用*号

4、App Services:应用程序提供的服务
App Services:选择你应用中将会使用的服务,在App ID注册成功之后也可再次编辑你的选择
在自己应用中所使用到的选项上打√,因为我选择的是通用型(WildCard),所以Game Center,In-App Purchase, Push Notifications都是不可选的,如果要使用这些功能,请选择精确型(Explicit)

完成上面的填写之后,选择Continue
5、确认信息

确认之后选择Submit,出现Registration complete.的字样,选择Done即可
四、添加设备(Devices)
1、将设备连上电脑,打开在XCode的Organizer->Devices中
Xcode5以下的Organizer在软件右上角即可找到,XCode5的Organizer选择Window->Organizer(快捷键shift+command+2)
设备连接上XCode之后Devices中的信号灯有灰色,黄色,绿色三种情况
1.1、灰色灯
如果设备是之前未作为开发机,在Devices中设备上的灯应该为灰色,在右侧有选项将设备作为开发机,点击即可,由于没有新机,无法截图演示
1.2、黄灯,有两种情况

- 设备未连接好,请将连接线重新插一次,并检查接口是否插紧,如果还是黄灯,则未下一种情况
- 设备版本高于XCode所能支持的版本,如XCode4.6.3,能支持的最高版本未iOS6.1,如果你的设备未iOS7及以上,此时需要更新至XCode5
1.3、绿灯:说明连接成功,可进行调试
2、查看设备的UDID,如图8,Identifier 后面的一串字母加数字的组合即UDID

3、回到苹果开发者中心,选择Devices 右侧栏的添加按钮,方法与添加App ID相同

下面还可以选择添加多台设备,本人表示智商不够,不会,99美元账号可以添加100台设备,299美元的账号本人不晓得。。
五、添加证书(Certificates)
1、选择添加证书,按图10操作之后选择continue

2、出现教你如何申请证书的界面
2.1、打开电脑中的钥匙串:选择LaunchPad->其他->钥匙串访问

2.2、选择钥匙串访问->证书助理->从证书颁发机构请求证书

2.3、填写邮件地址和名称,点击继续存储,一般存储在桌面(根据个人喜好)

2.4、回到developer的界面,选择Continue,出现上传证书界面
2.5、选择Choose File上传刚才存储的证书,然后选择Generate.

2.6、生成之后会出现可以Download的证书,选择下载,双击安装即可
六、添加描述文件(Provisioning Profiles)
1、选择Provisioning Profiles->Development,然后选择右侧添加键添加
2、Select Type -> 选择iOS App Development -> 选择Continue
3、选择App ID,选择我之前添加的com.oschina.*,选择Continue

4、选择证书,选择刚才生成的开发证书,然后选择Continue
5、选择设备,会出现设备列表,一般来说把所有设备都添加进去,方便多台设备调试,不用再申请profile,选择Continue
6、为这个profile命名,不可含有标点,选择Generate

7、选择下载,双击安装即可
七、配置XCode
1、打开XCode,插上设备,如果XCode不显示设备,而是iOS Device的状态,则检查Targets->iOS Application Target->Deployment Target中的版本是否与设备版本不匹配

2、选择上图中Build Settings,将Code Signing中的profile设置成上文下载的Provisoning Profile(joanfen),也可设置成Automatic profile中的iPhone Developer,XCode将会自动匹配描述文件

3、检查Bundle ID是否与描述文件所包含的App ID中的Bundle匹配,选择TARGETS->Summary查看,由于我们申请的是通用型App ID,所以Bundle Identifier只需要是com.oschina.打头即可,后面可以随意填写

选择真机设备,运行,大功告成。
八、P12导出证书
在钥匙串中找到登录选项中得iPhone Developer一项,右键选择导出,证书类型选择“个人信息交换(.p12),并将创建的provision profile文件和证书一起拷贝到别的mac上双击安装就可使用了
PS:如果设备为越狱设备,不管provision profile里有没有包含你得设备,都是可以真机调试的,如果不想花费99美元的话,可以在淘宝上买一个证书,或者是找亲朋好友索要他们的P12证书吧,祝大家好运!
IOS - 真机测试的更多相关文章
- IOS真机测试
学习了两天的Android开发,我感觉Android开发跟IOS开发和.NET平台下的开发有点不同,Android开发我更觉得跟web(Html)倒是有类似的地方,都是节点标签显示的,当然个人理解,感 ...
- iOS真机测试,为Provisioning添加设备 -- based xcode6[原]
iOS真机测试, 我们需要添加几台新的设备进行测试.我们只需要对Provisioning Profiles 进行更新. 1. 在苹果开发者中心添加测试设备 打开苹果Certificates, Ide ...
- Unity导出iOS真机测试教程
原地址:http://unity3d.9tech.cn/news/2014/0410/40177.html 学 习了两天的Android开发,我感觉Android开发跟IOS开发和.NET平台下的开发 ...
- iOS 真机测试错误“The application bundle does not contain a valid identifier”
iOS 真机测试错误"The application bundle does not contain a valid identifier" 真机测试的时候报错:"The ...
- iOS 真机测试错误“The application could not be verified”
iOS 真机测试错误"The application could not be verified" 真机测试的时候报错:"The application could no ...
- Xamarin.iOS真机测试报错
Xamarin.iOS真机测试报错 错误信息:The MinimumOSVersion inside Info.plist does not include the device version( ...
- IOS真机测试(用证书进行真机测试)
真机测试需要准备 1.证书 2.Iphone或者Ipad 3.到developer.apple.com注册开发者账号(不用money的) ------------------------------- ...
- iOS真机测试中出现dyld`dyld_fatal_error错误
最近进入一家新公司,接手了一个之前由外包公司承接的项目.首先吐槽一下项目质量,哎毕竟也憋了很久了. 1.上手项目是打不开的,所有framework静态库全体飘红,一编译七八十错误.最终是偷懒还是什么就 ...
- ios 真机测试与发布详细流程,基于最新的开发者网站,ios7,xcode5(有截图的哦)[[[第一部分真机测试]]]
转载于:http://blog.csdn.net/lv_ruanruan/article/details/14446597 真机测试及发布详细流程,最新版 第一次一个人搞一个项目,我们老大规定,一个周 ...
- ios真机测试问题
前端页面在ios端真机测试出现的问题 由于苹果对于性能的要求是近乎苛刻,如果没有可点的特性的元素系统默认不会给它响应事件,因此真机测试时容易添加不上绑定事件 解决办法: 1.通过js判断当前是否为苹果 ...
随机推荐
- python文件I/O(转)
Python 文件I/O 本章只讲述所有基本的的I/O函数,更多函数请参考Python标准文档. 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式.此函数把你 ...
- iOS: ARC & MRC下string内存管理策略探究
ARC & MRC下string内存管理策略探究 前两天跟同事争论一个关于NSString执行copy操作以后是否会发生变化,两个人整了半天,最后写代码验证了一下,发现原来NSString操作 ...
- 湖南国庆模拟赛day1 分组
题目大意:给你一个n个数的数列s,要对这些数进行分组,当有任意两个数在一种方案在一起而在另一种方案中不在一起算是两种不同的方案,一个组的"不和谐程度"为组内数的极差,如果只有一个人 ...
- 【bzoj4034】[HAOI2015]树上操作
题目描述 有一棵点数为 N 的树,以点 1 为根,且树点有边权.然后有 M 个 操作,分为三种: 操作 1 :把某个节点 x 的点权增加 a . 操作 2 :把某个节点 x 为根的子树中所有点的点权都 ...
- lightoj.1048.Conquering Keokradong(二分 + 贪心)
Conquering Keokradong Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu ...
- hihoCoder挑战赛11.题目4 : 高等理论计算机科学(LCA)
clj在某场hihoCoder比赛中的一道题,表示clj的数学题实在6,这道图论貌似还算可以... 题目链接:http://hihocoder.com/problemset/problem/1167 ...
- 【Android面试】Android面试题集锦 (陆续更新)(最新2012-6-18) eoe上看到的
===============eoeAndroid社区推荐:======================= 1.Android开发新浪面试题[开发者必看哦]下载地址 http://www.eoeand ...
- BZOJ1901——Zju2112 Dynamic Rankings
1.题目大意:区间第k小,有单点修改 2.分析:这个是树状数组套线段树,也是主席树....为什么主席树这么多QAQ 就是树套树的那种插入什么的,注意啊,一定要动态开内存..不然会爆.. 然后算答案有两 ...
- ubuntu安装python一些安装包
sudo apt-get install python-pip sudo pip install distribute sudo pip install nose sudo pip install v ...
- OpenCv椭圆皮肤模型
Mat input_image; Mat output_mask; Mat output_image; void main() { VideoCapture cam(); if (!cam.isOpe ...