打包iOS应用程序
如果想要将做的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应用程序的更多相关文章
- xcodebuild和xcrun实现自动打包iOS应用程序
随着苹果手持设备用户的不断增加,ios应用也增长迅速,同时随着iphone被越狱越来越多的app 的渠道也不断增多,为各个渠道打包成了一件费时费力的工作,本文提供一种比较智能的打包方式来减少其带来的各 ...
- 没有苹果电脑打包iOS平台的 Ionic 2程序——《Ionic 2 实例开发》更新内容
没有苹果电脑打包iOS平台的 Ionic 2程序--<Ionic 2 实例开发>更新内容春节刚过,祝各位新的一年里万事如意,一帆风顺.<Ionic 2 实例开发>在这段时间里更 ...
- IOS 发布程序(打包上传)
• 发布程序的主要步骤 登录开发者主页 生成cer证书:cer是一个跟电脑相关联的证书文件,让电脑具备发布程序的功能 添加App ID:发布哪些app? 生成MobileProvision文件:生成一 ...
- sencha touch打包成安装程序
为了更好地向大家演示如何打包一个sencha touch的项目,我们用sencha cmd创建一个演示项目,如果你的sencha cmd环境还没有配置,请参照 sencha touch 入门系列 (二 ...
- 发布iOS应用程序到苹果APP STORE完整流程
参考:http://blog.csdn.net/mad1989/article/details/8167529(xcode APP 打包以及提交apple审核详细流程(新版本更新提交审核)) http ...
- 在Visual Studio中使用MonoTouch开发iOS应用程序
前段时间在工作机上装了Mac OS X,这主要是因为我最近需要开发iPhone应用程序.虽然Xcode,Objective C一定是开发iOS应用程序的主流,但是经过一番考虑,我还是决定尝试一下使用M ...
- IOS应用程序升级
IOS应用程序升级流程介绍:IOS手机端应用程序需要升级时,打开服务器端html文件(本文为ucab.html文件)->点击在线安装->打开plist文件(本文中为ucab.plist文件 ...
- 【iOS开发必收藏】详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!【2012-12-11日更新获取”产品付费数量等于0的问题”】
转的别人的 看到很多童鞋问到,为什么每次都返回数量等于0?? 其实有童鞋已经找到原因了,原因是你在 ItunesConnect 里的 “Contracts, Tax, and Banking”没有完成 ...
- 使用Xcode 7 beta免费真机调试iOS应用程序
使用Xcode 7 beta免费真机调试iOS应用程序 六月 9, 2015 | K-Res 发布 今天凌晨的WWDC15虽然没有熬夜守候吧,但也还是早起第一时间翻看了twitter的相关标 ...
随机推荐
- hdu 4893Wow! Such Sequence!
多校第三场 7题..线段树A的 #include <cstdio> #include <cstring> #include <iostream> #include ...
- windows 服务器不能使用剪贴板解决办法
您可以在系统资源中先结束rdpclip.exe进程,然后重新打开c:\windows\system32\rdpclip.exe即可
- android 带文字阴影的button
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...
- 解决rails4.0中send_file文件下载两次的问题
之前在开发文件下载的功能时,我遇到了一个很奇怪的问题,点击下载链接,在chrome console中会出现两次请求,第一次返回200,下载的数据缓存在chrome的cache中,第二次返回304,直接 ...
- Cocos2d-x中如何增加图片和文本菜单
菜单都以MenuItem开头 MenuItemLabel - 文本菜单项 MenuItemImage - 图片菜单项 // on "init" you need to initia ...
- iOS Mapkit 定位REGcode地理位置偏移
在iOS上,使用系统Mapkit定位,获取到的坐标会有偏移: 今有需求,用系统Mapkit定位,并Regcode出实际地理位置,修正偏移: 解决方案: 使用MapView的代理 - (void)map ...
- win7之64位下安装oracle11g遇到问题和不能删除干净的问题
今天在win7下装了oracle11g 删了又卸 来来回回重启了4.5次,结合网上是解释归纳下几点: 一.win64_11gR2_database_1of2.zip和win64_11gR2_datab ...
- MMORPG 游戏服务器端设计
http://www.oschina.net/question/12_22983 这里给出一种宏观把握MMORPG服务器设计的文章,适合入门,读完后对服务器端的设计能有大概的掌握,方便对感兴趣的部分进 ...
- unity3d格式的导出与加载
http://blog.csdn.net/nateyang/article/details/7567831 1.导出.unity3d格式资源: http://game.ceeger.com/Scrip ...
- array_intersect_assoc用法详解
最近在做考试系统,想到这个数组函数,用法如下: <?php $a1=array('a','b','d','c','d','b','c','a'); $a2=array('b','d','d',' ...