一、发布测试,是指将你的程序给

  * 你的测试人员,因为程序总归是要测试的
  * 你的客户,在正式发布之前,客户肯定是要先看(验收)的
在他们的iOS设备(iphone,ipod, ipad)安装,运行。
 
二,阅读前提:你自己已经完成了真机测试,意味着:
  1、你已经加入了苹果的"iOS developer program",标志事件是付了$99。
 
2、在iOS Provisioning Portal生成了开发证书
 
 
  3、在xcode完成了证书的安装。菜单:window->Organizer,然后选择Devices
 
 
 
三,发布流程。
  
 图:发布流程
1、3个角色:Tester,就是上述测试人员或者你的客户;Developer,就是你了;Program Portal,苹果官方网站,登录你的“Member Center”,就能看到了,

2、3个主要步骤,见图发布步骤,

  1)获取Tester设备udid
  2)到Program Portal生成ad hoc发布证书
  3)在xcode中使用该证书打包(Archive)程序
以上3个步骤后续会详细说。

假设你的Tester(团队里的测试人员、你的客户)有一定iOS设备使用经验,至少大致会用itunes。

要获取你的Tester的iOS设备UDID:
1、将iOS设备插到安装了itunes的pc/mac,itunes会弹出显示设备概要信息界面,如下图,

这里我们可以看到设备的12位序列号,这不是我们想要的。

2、点击序列号,设备概要界面显示设备udid,如下图,

 
CTRL-C(mac下为Command-C)拷贝下来,然后QQ或者邮件发给你。
注:1)虽然点击udid,界面什么变化也没有,但是确实是可以拷贝
      2)千万不要让人家一个个字符抄,你不可惜人家辛苦,也得想想抄40左右得字符很容易出错。
 
UDID拿到了,得在iOS provisioning portal上将它加Device列表上,以下是具体步骤:
1、登录会员中心(Member Center)

到苹果开发者官方网站(developer.apple.com),选择Member Center,如上图。

2、使用你的Apple ID登录,如下图

 
(是写得有点罗嗦)\

3、在会员中心,选择iOS Provisioning Portal,如下图,

4、进入Provisioning Portal主界面,如下图,

5、选择“Devices”,然后选择“Add Devices”, 出现下图界面,

一个地方填名称,一个地方填你从Tester那里拿到的udid。

iOS证书分2种,1种是开发证书,用来给你(开发人员)做真机测试的;1种是发布证书,发布证书又分发布到app store的(这里不提及)和发布测试的ad
hoc证书。

那ad hoc证书和开发证书区别在哪里?如果你的tester(团队测试人员、客户)都能将测试设备拿到你面前,直接插到你的mac开发机上,你可以直接将程序“灌”进去,那有开发证书就够了,不需要ad
hoc证书。
  如果tester的iOS设备不能直接让你灌程序,那怎么办?你必须打包(Archive)你的程序,然后发给你的tester,让他通过itunes进行安装,那就需要ad hoc证书了。
   具体的区别,我们先看看ad hoc证书生成过程,和开发证书生成非常类似,
1、进入Provisioning Portal主界面,如下图,

如何进入Provisioning Portal主界面,可以参考“iOS程序发布测试2-获取Tester设备UDID”)

2、选择Provisioning,然后选择Distribution,如下图

 
这是开发证书和发布证书生成时的一个区别,在文章“iOS程序发布测试4-打包(Archive)发布(share)”中会说到使用的区别。

3、选择“New Profile”,出现新建发布证书界面,如下图,

选择“Ad Hoc”,然后选择Tester的设备ID(如何获取和添加Tester设备ID,见“iOS程序发布测试3-获取Tester设备UDID”)。
 
4、下载证书到本地,

 
点击“Download”,将证书下到本地。
注:如果status是“pending”,刷新一下就成“Active”了。
 
5、导入证书。双击,出现Xcode(我这里是4.0)provisioning界面,如下图,

证书生成好,而且导入了,接下来就是打包(Archive)和发布(share)了。

发布测试的最后一步打包(Archive),前面几个步骤:
Xcode4 真机程序发布测试1-准备
Xcode4 真机程序发布测试2-获取UDID
Xcode4 真机程序发布测试3-生成ad
hoc证书

Xcode4帮助文档有比较详细介绍,但是居然是错的,这里说明一下。
1、设置“Build Settings”,下图是官方文档截图,留意那个红框,居然说反了。

 
"Skip install"一定要选NO,否则在下面的打包步骤后,Organizer看不到你的程序,就为这折腾我好些时间,国外论坛一堆问题,说我按照官方文档做了,怎么Organizer看不到程序。

1.1 选择ad hoc证书.在“Code Signing”栏,选择你在文章(“iOS程序发布测试3-生成ad hoc证书”)生成的发布证书(ad
hoc),如下图,

 
这里要选择“iPhone Distribution”,而不是“iPhone Development”,否则会在下面打包(Archive)步骤报证书错误。

2、编辑“Scheme”,选择菜单:Product -> Edit Scheme,如下图,

 
红色框部分要选对,注意要分别选iOS Device和Release。

3、打包(Archive),选择菜单:Product->Archive,在organizer窗口可以看到你的程序,

 
然后点击“share”按钮,进行发布(share)

4、Share

选第一个“iOS App Store Package”,生成.ipa文件,你的Tester使用itunes即可安装。
如果选择了最后一个,“Archive”,需要对方安装xcode。

来源:http://blog.csdn.net/xiaoxuan415315/article/details/8191109

iOS 程序打包,安装流程的更多相关文章

  1. Ios 程序封装,安装流程

    转:http://www.myexception.cn/operating-system/1436560.html Ios 程序打包,安装流程 一.发布测试,是指将你的程序给   * 你的测试人员,因 ...

  2. C#程序打包安装部署

    今天为大家整理了一些怎样去做程序安装包的具体文档,这些文档并不能确保每个人在做安装包的时候都能正确去生成和运行,但是这些文档的指导作用对于需要的朋友来说还是很有必要的,在实际产品的安装部署过程中可能有 ...

  3. 【转】C#程序打包安装部署之添加注册表项

    今天为大家整理了一些怎样去做程序安装包的具体文档,这些文档并不能确保每个人在做安装包的时候都能正确去生成和运行,但是这些文档的指导作用对于需要的朋友来说还是很有必要的,在实际产品的安装部署过程中可能有 ...

  4. C# windows窗体程序打包安装及卸载

    一.新建安装部署项目

  5. C#程序打包安装部署之添加注册表项(转)

    今天为大家整理了一些怎样去做程序安装包的具体文档,这些文档并不能确保每个人在做安装包的时候都能正确去生成和运行,但是这些文档的指导作用对于需要的朋友来说还是很有必要的,在实际产品的安装部署过程中可能有 ...

  6. iOS程序上传流程 2014年9月最新版

    程序上传步骤: 1.登录账户,点击Manage Your Apps 2.点击Add New App 3.注册Bundle ID,点击蓝色的here 4.进入了注册页面,首先要填写App ID的一个描述 ...

  7. RHEL5.8上SAMBA源码修改打包安装流程

    之前一直使用系统自带的SAMBA,近期需要对SAMBA代码做一些修改,然后还是打算用RPM包的方式来安装部署. 这个流程本身不复杂,在这里记录下来,免得在另外写说明文档. 关键词:RHEL5.8, s ...

  8. DDMS和程序打包过程

    1. Android版本对应api级别 2.3~~~~~10 3.0~~~~~11 4.0~~~~~14 4.1.2~~~16 2.3和4.1.2是最稳定的 2.Android手机常见分辨率 320* ...

  9. 2.QT中使用资源文件,程序打包

     1 程序中使用资源文件 A  一个QT空项目 B  右击项目,添加新文件 添加后的效果是 C  右击main.prc,选择"添加现有项",找到要使用的资源文件.最终的效果是: ...

随机推荐

  1. Don’t Assume – Per Session Buffers

    MySQL has a number of global buffers, i.e. your SGA. There are also a number of per session/thread b ...

  2. android中的TextView控件

    我以前是搞ssh开发的,现在在搞android开发,所以简单学习了一下,对于自己所了解的做一个记录,也算是一个笔记吧,如果有什么不对的,希望大家给予一定的指导.  一.TextView的基本使用 Te ...

  3. js添加事件通用方法

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. jquery中的each方法,$.each \ this.each \ $.fn.each

    jquery.each 方法 方法一 $("img").each(function(i,elem){ // i 下标 从零开始, // elem == this // $(elem ...

  5. 【redis】 linux 下redis 集群环境搭建

    Redis集群 (要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下) 127.0.0.1:63791 ...

  6. jquery.find()

    http://www.365mini.com/page/jquery-find.htm

  7. C++中的空类与空结构体大小

    今天面试遇到了一个很有意思的问题,即空结构体在C++中所占的内存大小是多少?参见如下代码: #include <iostream> struct S0 { }; int main() { ...

  8. JDBC Driver

    Infomix Driver: com.informix.jdbc.IfxDriver JDBC URL : jdbc:informix-sqli://<host>:<port> ...

  9. SPOJ #4 Transform the Expression

    Not hard to know it is simply transform from in-order to post-order.My first idea is to build a tree ...

  10. 使用laravel的Eloquent模型获取数据库的指定列

    使用laravel的Eloquent模型获取数据库的指定列   使用Laravel的ORM——Eloquent时,时常遇到的一个操作是取模型中的其中一些属性,对应的就是在数据库中取表的特定列. 如果使 ...