当开发者历经磨难、披荆斩棘,完成了一个iOS项目后,最后的临门一脚就是应用的内测、部署。那么,在这最后的射门动做中,都有哪些地方须要开发者注意?有哪些方式可以更好地帮助咱们进行iOS应用的发布部署?ios
本文针对iOS App开发的最后阶段来详解如何在真机上进行调试,将App发送给其余测试人员进行内测,以及内测完成后如何将App上传至App Store进行应用审核,针对苹果帐号的类型、真机调试、打包与崩溃收集进行深度剖析。xcode
苹果开发者计划分为我的、公司、企业和教育开发者四个类型。我的开发者证书费用为$99一年,该帐号在App Store销售者只能显示我的的ID。而且,我的帐号只能有一个开发者,100个苹果的iOS设备UDID测试。
公司开发者费用为$99一年,该帐号在App Store销售者能够显示相似Studios,或者自定义的团队名称。公司帐号能够容许多个开发者协做开发,比我的多一些账号管理的设置,能够设置多个Apple ID,分4种管理级别权限,100个苹果的iOS设备UDID测试。可是,申请时须要填写公司的邓白氏编码(D-U-N-S),D-U-N-S邓白氏码能够在 苹果官方网站免费申请。服务器
企业开发者帐号费用为$299一年, 该帐号开发应用不能发布到App Store,只能企业内部应用,苹果的iOS设备UDID数量不限制。企业帐号适合不但愿上线App Store,可是须要企业内部,好比1000人的iOS设备都部署。app
特别须要注意的是,其余渠道提供的所谓的企业证书其实是与他人共用一张企业证书,苹果会侦测到这种状况,并进行封号处理。封号后,包括已经使用该证书安装了的App都会没法继续使用。ide
这些开发者帐号的申请都须要一个重要的条件,那就是有一张支持Visa或MasterCard的信用卡。工具
使用真机调试,必需要使用开发者证书,以及正确填写App ID,配置好Provision Profile,具体流程以下:测试
须要下列几步:
1.请求CSR文件网站
填写电子邮件地址,经常使用名称,勾选存储到磁盘,最后保存CSR文件到指定位置
ui
最后保存CSR文件到指定位置
编码
2.建立调试证书
3. 双击安装
能够看到钥匙串中有了咱们刚安装的证书,左侧有个三角,点击展开能够看到证书私钥,若是没有私钥,则证书是不可用的,通常这种状况是你在开发者网站上下载了其余Mac上制做的证书,能够从这台Mac导出证书安装到本身的电脑上。
1. 填写AppID Name
**2. 支持推送、Game Center等功能的话不能建立含有通配符*的AppID,因此这里咱们选择Explicit App ID
3. 勾选须要的服务,而后Continue**
1. 填写设备名称、设备UDID
2. Register
注意:最多添加100台设备
1. 选择AppID
2. 选择证书
3. 选择设备(只有Development、AdHoc须要选择设备)
4. 填写Profile Name
5. 点击Download下载,双击安装到Xcode
默认Configurations包含两个配置,Debug、Release,能够看到Build Setting里好多配置都区分了Debug、Release,能够根据不一样的状况配置不一样的选项,最经常使用的就是根据真机调试、打包发布,分别在Debug、Release选择合适的证书、Profile。
我的认为,如今的Xcode不用再Duplicate Release配置来创建专门打包AppStore或者Adhoc或其它的Configuration,由于感受并不会方便多少,只是省去了选择证书,可是你仍是设置Archive选项。
通常来讲,Adhoc、AppStore\Inhouse,两者用的都是同一个证书,只是Profile不一样而已,简单的选择一下Profile,是否是更省事一些呢。
先说一下iOS设备的指令集:
iPhone 5s, iPhone 6, iPhone6 Plus;
iPad Air, iPad Air 2;
iPad Mini 2, iPad Mini 3;
iPhone 5, iPhone 5c;
iPad 4;
iPhone 3GS, iPhone 4, iPhone 4S;
iPad, iPad 2, iPad 3, iPad Mini;
iPhone, iPhone 3G;
Architectures
该编译选项指定了工程支持哪些指令集,若是支持的指令集数目有多个,就会编译出包含多个指令集二进制包,形成最终编译的包很大。
Valid Architectures
该编译项指定可能支持的指令集,该列表和Architectures列表的交集,将是Xcode最终生成二进制包所支持的指令集。
如上图所示,Architectures 支持的指令集为 armv七、arm6四、Valid Architectures 支持的指令集为armv七、armv7s、arm64,这时只会生成一个 armv七、arm64 指令集的二进制包。
注意:许多用户可能会发现本身的应用安装不了,这时候能够看看本身的App支持的指令集,遇到过几个用户的指令集只支持arm64,这样的App在设备不是arm64的状况下是安装不了的。
上图中Code Signing Identity包含的Debug和Release两项,其中,Debug指选择真机调试证书,Release指选择发布证书(AdHoc、AppStore/Inhouse打包都使用发布证书)。而在 Provisioning Profile中,不管真机调试,仍是发布App,选择的Profile的App ID要与项目工程的BundleId匹配。
注意:Provisioning Profile的Release这里选择的Profile,并不必定就是签名ipa用的Profile,后面会讲到。
导出ipa首先须要选择ipa版本,导出App Store/AdHoc/企业版ipa,而后点击Next。若是Xcode 没有登陆企业开发者帐号,选择导出企业版ipa的时候会提示添加企业开发者帐号到xcode。
选择证书
这里就是上面说的在工程选择的证书、profile可能并非签名用的,关键在这里,这里会显示已经添加到Xcode的开发者帐号对应的证书列表,能够选择签名用的证书。若是跟工程设置的证书一致,而且Profile匹配,则会根据工程配置的证书、Profile来签名导出。若是跟工程配置的证书不一致,则会根据选择的证书自动查找匹配的Profile来签名导出ipa。
这里会显示导出的ipa用的是哪个证书、Profile签名的,Profile旁边那个箭头并非选择Profile,而后在Finder中显示当前Profile。 因此导出的最后一步,尽可能确认一下签名的证书、Profile是否是本身指定的。
内测分发ipa文件给测试人员主要有3种方法:
请注意,不管使用何种形式分发,内测的人数限制,以及App的UDID限制始终是存在的。若是想新增长测试人员,开发者仍然须要将UDID写入Provision Profile,从新生成ipa文件进行分发。
使用iTunes进行内测分发
使用iTunes进行分发比较麻烦,须要测试用户使用数据线链接装有iTunes的电脑上,先将ipa文件添加到iTunes,再将iTunes的App同步到手机上。因为国内用户对iTunes熟悉程度不高,故不推荐你们使用这种方式进行内测分发。
使用itms-services协议进行下载分发
相比iTunes的分发方式,使用itms-service 分发的最大好处是测试用户无需使用数据线,只需打开Safari中访问包含itms-service链接的页面,单击链接后便可下载IPA文件。
itms-services的原理是itms-services指向一个plist文件,这个plist文件包含了ipa文件下载的地址,iOS设备的Safari会自动将plist中指定的ipa文件下载安装到本地。
itms-services的麻烦之处就是开发者须要本身搭建一个服务器,以后苹果在iOS 7.1 之后安装ipa,写入ipa地址的plist文件的存放地址必须是一个https的地址.
itms的结构参考以下
<a href="itms-services://?action=download-manifest&url=https://xxx/test.plist">安装IOS BetaV1.0 </a>
plist 的结构参考以下
<?xml version="1.0" encoding="UTF-8"?> <plist version="1.0"><dict> <key>items</key> <array> <dict> <key>assets</key> <array> <dict> <key>kind</key> <string>software-package</string> <key>url</key> <string><![CDATA[http://fir.im/xxxxxx]]></string> </dict> <dict> <key>kind</key> <string>display-image</string> <key>needs-shine</key> <integer>0</integer> <key>url</key> <string><![CDATA[http://fir.im/xxx]]></string> </dict> <dict> <key>kind</key> <string>full-size-image</string> <key>needs-shine</key> <true/> <key>url</key> <string><![CDATA[http://fir.im/xxx]]></string> </dict> </array> <key>metadata</key> <dict> <key>bundle-identifier</key> <string>im.fir</string> <key>bundle-version</key> <string><![CDATA[1.3.0]]></string> <key>kind</key> <string>software</string> <key>title</key> <string><![CDATA[Fir plist Demo]]></string> </dict> </dict> </array> </dict></plist>
咱们能够看到,虽说用户比较方便,但对开发者而言须要写不少东西,还得搭建服务器,上OpenSSL等,比较麻烦。
使用第三方工具进行内测分发
为了不开发者使用itms-services而带来的额外工做量,可使用第三方工具如 fir.im ,将ipa快速地进行内测分发。