打包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的相关标 ...
随机推荐
- from表单实现无跳转上传文件,接收页面后台数据
实现无跳转发送表单数据.文件,并能接收后台返回的数据. 主要技术要点: 1.form表单添加target属性,指定一个iframme的name:form表单提交后在iframe内嵌窗口接受响应,主页面 ...
- 转: APK签名校验绕过
转: http://drops.wooyun.org/mobile/4296 APK签名校验绕过 3xpl0it · 2014/12/11 10:41 0x01 Android签名机制 将APK重命名 ...
- 转: windows下C++ UI库 UI神器-SOUI
转:http://www.cnblogs.com/setoutsoft/p/4996870.html 前言 在Windows平台上开发客户端产品是一个非常痛苦的过程,特别是还要用C++的时候.尽管很多 ...
- Discuz常见小问题2-如何修改管理员密码,修改admin账户密码
进入后台,点击用户,用户管理,搜索admin这个用户找到,然后点击详情 输入新密码即可(无需验证老的密码)
- JMeter 十一:参数化
Test Plan中定义变量 打开测试计划,在用户定义的变量中定义变量. 这里定义了一个HOST变量,值为“www.baidu.com”. 之后就可以使用 ${HOST} 来引用这个变量. User ...
- JBoss 系列十八:使用JGroups构建块RpcDispatcher构建群组通信应用
内容概要 本部分说明JGroups构建块接口RpcDispatcher,具体提供一个简单示例来说明如何使用JGroups构建块RpcDispatcher构建群组通信应用. 示例描述 类似Message ...
- 从零開始开发Android版2048 (三)逻辑推断
近期工作比較忙,所以更新的慢了一点,今天的主要内容是关于Android版2048的逻辑推断,经过本篇的解说,基本上完毕了这个游戏的主体部分. 首先还是看一下,我在实现2048时用到的一些存储的数据结构 ...
- Tomcat性能调整完整教程
Tomcat性能调整完整教程 发表于:2007-07-13来源:作者:点击数:526 标签: 一. 引言 性能测试与分析是软件 开发 过程中介于架构和调整的一个广泛并比较不容易理解的领域,更是一项较为 ...
- react 设置代理(proxy) 实现跨域请求
一,对于使用creat-react-app构建的项目,可以直接在package.json下配置,具体如下 "proxy": "http://api.xxxx.com&qu ...
- win10下Visual Studio 2015,C++ x64编译zmq
PS.本人编译过程踩得坑,记录备忘 下载:(1)官网:http://zeromq.org/intro:get-the-software,有简明的编译方式,cmake的,这里不多赘述 (2)到GitHu ...