前期准备工作
- 准备应用程序图标:准备1024x1024 px大小的png图片,在后续的打包中会用到;还会用到29x29(Icon-small.png,用于搜索结果展示,注意首字母大写的i)、57x57(Icon.png,主要使用的应用程序图标)、58x58(Icon-small@2x.png,用于高分辨率下的搜索结果展示)、114x114(Icon@2x.png,用于高分辨率的图标)的图片;打开xcodeproj文件,将所有图标拖动到项目目录保存下来;
- IOS开发者账号(IDP);
- 应用ID(AppId),注意这个App ID在ipa包编译过程中会使用到;
申请证书操作(管理员操作)
- 创建一个证书请求文件:在LaunchPad中选择“其他”,选择"钥匙串访问",然后在“钥匙串访问”->“证书助理”菜单选择“从证书颁发机构请求证书”,如下图:
- 注意如果是想申请开发证书,那么用户电子邮件和常用名称可以使用开发人员(如果是团队开发,请填写team admin)的;如果想申请发布证书,那么应该填写公司email和公司名称;
- 选择“存储到磁盘”选项,注意不要选择“让我指定密钥对信息”,点击“继续”;
- 将证书请求文件保存到桌面,生成的是“CertificateSigningRequest.certSigningRequest”文件;
- 接着我们去https://developer.apple.com/devcenter/ios/index.action,登陆后选择“Certifucates, Identifiers & Profiles”,在屏幕的右边区域:
- 我们进入后选择Certificates(发给...证书),注意我们首先需要选择的是"Development"类型,用于开发、测试使用,点击"+"号创建;
- 对于未使用Apple Push Notification service(APN)服务的应用,我们选择iOS App Development即可,然后选择你的App ID并且继续,需要你上传一个CSR文件,我们上传刚才生成的那个请求授权文件;
- 好了,现在可以下载这个证书文件了:
证书的导出(管理员操作)
之前的证书是开发团队中的admin创建的,需要分享给其余开发人员使用。admin还需要做如下操作:
- 下载.cer证书文件,并双击导入钥匙串;
- 钥匙串中的私钥,选择导出,保存为.p12格式的证书文件,期间要求你输入2次证书的密码和一次管理员主机的密码;
证书的导入(普通用户操作)
- 普通的开发人员双击下载的证书文件,出现提示选择;
- 点击添加即可,期间输入该证书的密码;
设定APP Identifier(管理员操作)
App Indentifier的操作比较简单,按照提示一步步去做就ok了,期间注意不要输入星号做通配符即可。
添加Device(管理员操作)
这一步的操作也比较简单,主要是将每一台可调试的设备的Identifier录入进去;所以你需要一个UDID,你可以在xcode的菜单Window->Organizer的Devices列表中查看:
生成provisioning profiles(管理员操作)
provisioning profiles主要是为了测试你的应用准备的。
- 生成provisioning文件:同样在左边选择Provisioning Profiles菜单,然后选择新建一个Development类型的profile,如果你的certification/devices/indentifier更新过,同样需要更新provision:
- 注意选择你的App的id;
- 对于development类型的provisioning profiles,你需要添加DeviceID;
- 选择你的App ID和你的certificates,选择设备,之后生成;
- 现在我们的profile文件也可以下载了,下载下来后管理员分发给每个普通用户;
测试应用(普通用户)
现在我们已经可以开始测试我们的应用。
- 我们选择我们需要调试的设备,然后使用command+r运行我们的程序,即可进行测试:
- 模拟器上没问题,换到真机的话会出编译错误,提示是:A valid provisioning profile matching the application's Identifier 'xxxx' could not be found。
- 所以我们需要添加我们的profile,我们在XCode中打开Organizer,并且将profile文件拖过去(注意昨天选取library下面的provisioning profiles,里面列举的是你添加的profile文件):
- 再次编译
- 期间需要注意的是,对于我们应用程序,我们的Bundle identifier,特别是发布之前的测试,一定要和我们配置的一样(在之前的Identifier配置中,iOS App的Certificates, Identifiers & Profiles的界面中);