如果想要将做的iOS应用程序装到自己的iOS设备上测试、或者装在别人的iOS设备上,或者想发布到App Store里,先要给应用签名。签名就要有证书,这就需要申请证书的过程了。

把自己的应用程序装到设备中,主要有以下几种方式:

① 把iOS设备与电脑连起来,这样在Xcode的左上角就可以选择这个设备,之后直接点击Run,程序就被装在这个iOS设备了。这个主要用于在真机上测试程序。前提是Xcode中添加了包含这个设备信息的Profile。

② 使用Xcode将应用程序以Ad Hoc方式打包,导出ipa文件,然后用iTunes等工具将应用安装到iOS设备中。这种方式所用的Profile文件要是Ad Hoc类型,并且包含指定设备的信息。导出的ipa文件也只能安装到指定的设备中。

③ 将应用程序发布到App Store上,待苹果审核通过后,其他人就可以下载安装了。

这篇博客主要讲第二种方法。PS:本人使用的是Xcode 4.4.1,测试时间是2012年9月上旬。Xcode版本不同可能操作也会不同。另外,苹果开发者网站也可能以后改版,操作流程也可能会变。

1、先要注册一个iOS开发者账号,不再详述。

2、运行浏览器,登录https://developer.apple.com/,并进入iOS Dev Center:

进入后,单击右上角的Log in,输入开发者账号和密码。

3、验证成功后,在页面的右边会出现如下选项:

单击最上面的iOS Provisioning Portal,我们申请证书、管理证书、管理设备等操作就是在这个页面中进行的。如下图:

4、运行电脑中的“钥匙串访问”应用程序(英文名:Keychain Access),它一般在“实用工具”目录下。这个程序在证书申请、给应用签名的过程中起着很大的作用。签名时的很多问题都出在这个应用中,比较典型的是

CodeSign error: Certificate identity XXX appears more than once in the keychain.
The codesign tool requires there only be one.

后面会给出一般的解决办法。

5、在菜单中依次选择 证书助理——从证书颁发机构请求证书…:

在打开的窗口输入电子邮件和常用名称,并选择存储到磁盘以及让我指定密钥对信息:

单击继续,在打开的窗口设定文件名称和位置,点击继续,密钥大小选择2048位,算法选择RSA:

点击继续,则在之前设定的位置生成了.CSR的签名文件。默认名称是CertificateSigningRequest.certSigningRequest。

6、回到浏览器,在页面中依次选择Certificates——Distribution——Request Certificate:

在打开的页面选择要上传的CSR文件,提交。

7、此时正在审核刚才上传的文件,你可以单击click here to download now下载WWD intermediate certificate。

8、刷新页面,下载证书并安装,此时会自动加到钥匙串访问程序。

9、创建App ID。在浏览器的页面左边选择App ID:

然后在右边选择New App ID,如下图:

在Description输入你的应用的描述,Bundle Identifier是应用的代码标识,例如可以输入com.company.demoapp。如果你有Team ID,那么这个ID会自动加在Identifier前边。注意:

① 由于现在苹果还没提供App ID删除功能,所以Description最好也是唯一的,否则后边用到的时候会很麻烦。

② 在Xcode 4.4.1中,如果查看工程的Bundle Identifier,会发现对应于前边的demoapp部分是不可改的,所以在输入Bundle Identifier时可以就用Xcode中给定的,这样可以省去很多不知道的麻烦。

③ 建议申请一个最后字段为“ *”的ID,这样可以用同样的ID,提交一套应用程序,而无需为每个应用都申请单独的ID。

10、添加设备。如果你希望导出的ipa只能安装在指定的设备,则要将这些设备添加到上图中左侧的Devices中。先要获取iOS设备的标识符(不是序列号),可以将设备与iTunes相连,选择这个设备,会先显示序列号:

此时单击序列号,就会出现标识符:

11、回到浏览器的页面,在左边单击Device,然后选择Add Devices:

在打开的页面中添加设备。别忘了Submit。

12、现在可以制作Profile了。在浏览器的页面中单击Provisioning——Distribution:

然后选择New Profile:

在这个页面中,输入Profile Name,选择App ID。前边的Distribution Method有两个选择:App Store与Ad Hoc,前者表明你想将程序发布到应用商店,用这样的Profile导出的ipa所有设备都能安装;后者表明只允许将应用安装在指定的设备上,选择Ad Hoc后,需要在下方选择授权的设备,就是之前你指定的。

为了好区分Profile,本人在输入的Profile Name加了后缀,_App_Store以及_Ad_Hoc,这样就比较直观了。

13、新创建的Profile提交上去之后,稍等一会,刷新页面,就可以下载这个Profile了,下载成功后,双击就自动加到Xcode中了(本人的Xcode一直在运行)。

14、配置应用程序。用Xcode运行已经写好的工程,设置其Bundle Identifier:

然后,选择签名所用的Profile,如下图,找到Code Signing,找到其中的Release:

上图中蓝色的那行,点击与工程名对应的那一列,选择Profile文件,这里选择的是Ad Hoc类型的:

15、在Xcode左上角的设备选择iOS Device,然后在菜单栏依次找到Product——Archive,如果一切顺利,会显示Build Success:

然后会自动打开Xcode的Organizer的Archives,你可以给他们重命名:

16、选择刚才生成的那个存档,单击右边的“Distribute…”按钮:

在打开的页面选择Ad Hoc:

单击Next,在下一步选择Code Signing Identity,本人选的是与Ad Hoc相对应的:

之后继续Next,设好名称和保存的位置,再继续就可以生成ipa文件了。

17、用iTunes将生成的ipa安装到设备中。为了测试这个ipa文件,可以多试几台设备。

常见问题:

CodeSign error: Certificate identity XXX appears more than once in the keychain.
The codesign tool requires there only be one.

这个问题是很让人头疼的,问题出在钥匙串访问这个程序中,运行这个程序,将重复的Certificate identity删掉可能还是不管用,因为据说,Mac中的删除并不一定真的删除了,但肯定是看不见了。本人昨天晚上折腾了一个小时,将上面的打包过程重 复了好几次都不管用,后来重启了电脑,居然搞定了。

扩展阅读

iOS自动化打包介绍
iOS打包ipa安装包的流程
iOS应用程序详解
画板iOS应用程序:drawBoard
获取iOS应用程序信息:iAppInfos

打包iOS应用程序的更多相关文章

  1. xcodebuild和xcrun实现自动打包iOS应用程序

    随着苹果手持设备用户的不断增加,ios应用也增长迅速,同时随着iphone被越狱越来越多的app 的渠道也不断增多,为各个渠道打包成了一件费时费力的工作,本文提供一种比较智能的打包方式来减少其带来的各 ...

  2. 没有苹果电脑打包iOS平台的 Ionic 2程序——《Ionic 2 实例开发》更新内容

    没有苹果电脑打包iOS平台的 Ionic 2程序--<Ionic 2 实例开发>更新内容春节刚过,祝各位新的一年里万事如意,一帆风顺.<Ionic 2 实例开发>在这段时间里更 ...

  3. IOS 发布程序(打包上传)

    • 发布程序的主要步骤 登录开发者主页 生成cer证书:cer是一个跟电脑相关联的证书文件,让电脑具备发布程序的功能 添加App ID:发布哪些app? 生成MobileProvision文件:生成一 ...

  4. sencha touch打包成安装程序

    为了更好地向大家演示如何打包一个sencha touch的项目,我们用sencha cmd创建一个演示项目,如果你的sencha cmd环境还没有配置,请参照 sencha touch 入门系列 (二 ...

  5. 发布iOS应用程序到苹果APP STORE完整流程

    参考:http://blog.csdn.net/mad1989/article/details/8167529(xcode APP 打包以及提交apple审核详细流程(新版本更新提交审核)) http ...

  6. 在Visual Studio中使用MonoTouch开发iOS应用程序

    前段时间在工作机上装了Mac OS X,这主要是因为我最近需要开发iPhone应用程序.虽然Xcode,Objective C一定是开发iOS应用程序的主流,但是经过一番考虑,我还是决定尝试一下使用M ...

  7. IOS应用程序升级

    IOS应用程序升级流程介绍:IOS手机端应用程序需要升级时,打开服务器端html文件(本文为ucab.html文件)->点击在线安装->打开plist文件(本文中为ucab.plist文件 ...

  8. 【iOS开发必收藏】详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!【2012-12-11日更新获取”产品付费数量等于0的问题”】

    转的别人的 看到很多童鞋问到,为什么每次都返回数量等于0?? 其实有童鞋已经找到原因了,原因是你在 ItunesConnect 里的 “Contracts, Tax, and Banking”没有完成 ...

  9. 使用Xcode 7 beta免费真机调试iOS应用程序

    使用Xcode 7 beta免费真机调试iOS应用程序 六月 9, 2015  |   K-Res 发布   今天凌晨的WWDC15虽然没有熬夜守候吧,但也还是早起第一时间翻看了twitter的相关标 ...

随机推荐

  1. hdu 4893Wow! Such Sequence!

    多校第三场 7题..线段树A的 #include <cstdio> #include <cstring> #include <iostream> #include ...

  2. windows 服务器不能使用剪贴板解决办法

    您可以在系统资源中先结束rdpclip.exe进程,然后重新打开c:\windows\system32\rdpclip.exe即可

  3. android 带文字阴影的button

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  4. 解决rails4.0中send_file文件下载两次的问题

    之前在开发文件下载的功能时,我遇到了一个很奇怪的问题,点击下载链接,在chrome console中会出现两次请求,第一次返回200,下载的数据缓存在chrome的cache中,第二次返回304,直接 ...

  5. Cocos2d-x中如何增加图片和文本菜单

    菜单都以MenuItem开头 MenuItemLabel - 文本菜单项 MenuItemImage - 图片菜单项 // on "init" you need to initia ...

  6. iOS Mapkit 定位REGcode地理位置偏移

    在iOS上,使用系统Mapkit定位,获取到的坐标会有偏移: 今有需求,用系统Mapkit定位,并Regcode出实际地理位置,修正偏移: 解决方案: 使用MapView的代理 - (void)map ...

  7. win7之64位下安装oracle11g遇到问题和不能删除干净的问题

    今天在win7下装了oracle11g 删了又卸 来来回回重启了4.5次,结合网上是解释归纳下几点: 一.win64_11gR2_database_1of2.zip和win64_11gR2_datab ...

  8. MMORPG 游戏服务器端设计

    http://www.oschina.net/question/12_22983 这里给出一种宏观把握MMORPG服务器设计的文章,适合入门,读完后对服务器端的设计能有大概的掌握,方便对感兴趣的部分进 ...

  9. unity3d格式的导出与加载

    http://blog.csdn.net/nateyang/article/details/7567831 1.导出.unity3d格式资源: http://game.ceeger.com/Scrip ...

  10. array_intersect_assoc用法详解

    最近在做考试系统,想到这个数组函数,用法如下: <?php $a1=array('a','b','d','c','d','b','c','a'); $a2=array('b','d','d',' ...