文档章节

iOS开发27:打包应用程序

双子座
 双子座
发布于 2012/09/08 22:25
字数 1785
阅读 18881
收藏 130

如果想要将做的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中的删除并不一定真的删除了,但肯定是看不见了。本人昨天晚上折腾了一个小时,将上面的打包过程重复了好几次都不管用,后来重启了电脑,居然搞定了。

本文仅供参考,有问题可以在这讨论,但是本人不一定有回答。

© 著作权归作者所有

双子座
粉丝 540
博文 78
码字总数 61009
作品 0
南京
程序员
私信 提问
加载中

评论(11)

免费提供App网页自动下载安装所需https服务器!微信里无需跳转直接安装!App刷榜刷评论刷量排名优化!
iosapp无需经过苹果漫长严格审核,直接发布,通过网页或二维码,无需苹果帐号一键下载安装!无需越狱都可安装,无数量限制
苹果和安卓App开发定制,修改编辑破解,苹果帐号证书,极速上线各大市场,上架苹果商店,http://www.hdtht.com,QQ:1256932816
双子座
双子座 博主

引用来自“杨宇yangyu”的评论

要花99美元是吧?你没讲到啊!

嗯,是的。那属于注册账号部分,与本文关系不大。
杨宇yangyu
要花99美元是吧?你没讲到啊!
双子座
双子座 博主

引用来自“EditPlus”的评论

引用来自“双子座”的评论

引用来自“EditPlus”的评论

大湿 我想问下 你用的什么工具开发IOS应用的?

Xcode

windows下?

Mac OS
faced
faced

引用来自“双子座”的评论

引用来自“EditPlus”的评论

大湿 我想问下 你用的什么工具开发IOS应用的?

Xcode

windows下?
杜福

引用来自“entlib”的评论

另外推荐一本关于学习iOS 5 开发的电子书,中文版 --- 一步一步学习iOS 5 编程。

哪里有?可以下载吗?
双子座
双子座 博主

引用来自“entlib”的评论

另外推荐一本关于学习iOS 5 开发的电子书,中文版 --- 一步一步学习iOS 5 编程。

额,谢谢啊!
entlib
entlib
另外推荐一本关于学习iOS 5 开发的电子书,中文版 --- 一步一步学习iOS 5 编程。
双子座
双子座 博主

引用来自“EditPlus”的评论

大湿 我想问下 你用的什么工具开发IOS应用的?

Xcode
faced
faced
大湿 我想问下 你用的什么工具开发IOS应用的?
app封装,原生开发,包上架App Store商店

摘要: 找QQ:2205357007购买企业开发者账号后即可打包企业APP分发,用户可直接下载,不会掉。 找QQ:2205357007购买企业开发者账号后即可打包企业APP分发,用户可直接下载,不会掉。 将App打...

ios开发上架专家
2017/02/22
95
2
iOS APP真机调试测试详细步骤(2019.6.28)

真机调试分5步进行介绍! (上架前一定要先测试好APP,要不app一堆bug,上架也审核不过,浪费时间) 1、安装iOS上架辅助软件Appuploader 2、登录Appuploader申请iOS开发证书文件p12 3、登录A...

qtb999
06/28
83
0
iOS朋友圈,视频播放器、钓鱼小游戏、玻璃动画源码

iOS精选源码 模仿抖音App的ye m切换框架 将所有类型的推送封装成API,提供OC和Swift双版本调用demo2.0 波浪动画 【Swift/Objective-C】强劲的日期选择控件 利用Masonry 和YYlable ,FDTempla...

sunnyaigd
2017/11/06
17
0
你用.NET开发APP时,在云平台打包APP要填个“包名”的含义

ios 在ios平台,包名有它专有的名词:bundle ID.bundle ID可以翻译成包ID,也可以叫APP ID或者应用ID,他是每一个ios应用的全球唯一标识,只要bundle id不变,无论代码怎么改,图标和应用名称怎么换...

amanda112
04/09
12
0
【书坊赠书福利——第二期】《iOS 8开发指南》

本周是人邮IT书坊赠书的第二期,第一期参与度极高,微信君在此感谢你们的支持,第一期获奖赠书已全部寄出。 本周赠品 本周,微信君给大家推荐@人民邮电出版社-信息技术分社 刚刚上架的新书《...

生气的散人
2014/09/23
381
0

没有更多内容

加载失败,请刷新页面

加载更多

Replugin借助“UI进程”来快速释放Dex

public static boolean preload(PluginInfo pi) { if (pi == null) { return false; } // 借助“UI进程”来快速释放Dex(见PluginFastInstallProviderProxy的说明) return PluginFastInsta......

Gemini-Lin
今天
4
0
Hibernate 5 的模块/包(modules/artifacts)

Hibernate 的功能被拆分成一系列的模块/包(modules/artifacts),其目的是为了对依赖进行独立(模块化)。 模块名称 说明 hibernate-core 这个是 Hibernate 的主要(main (core))模块。定义...

honeymoose
今天
4
0
CSS--属性

一、溢出 当内容多,元素区域小的时候,就会产生溢出效果,默认是纵向溢出 横向溢出:在内容和容器之间再套一层容器,并且内部容器要比外部容器宽 属性:overflow/overflow-x/overflow-y 取值...

wytao1995
今天
4
0
精华帖

第一章 jQuery简介 jQuery是一个JavaScript库 jQuery具备简洁的语法和跨平台的兼容性 简化了JavaScript的操作。 在页面中引入jQuery jQuery是一个JavaScript脚本库,不需要特别的安装,只需要...

流川偑
今天
7
0
语音对话英语翻译在线翻译成中文哪个方法好用

想要进行将中文翻译成英文,或者将英文翻译成中文的操作,其实有一个非常简单的工具就能够帮助完成将语音进行翻译转换的软件。 在应用市场或者百度手机助手等各大应用渠道里面就能够找到一款...

401恶户
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部