当开拓者历经磨难、披荆斩棘,完成了一个iOS项目后,末了的临门一脚便是运用的内测、支配。那么,在这末了的射门动作中,都有哪些地方须要开拓者把稳?有哪些办法能够更好地帮助我们进行iOS运用的发布支配?
本文针对iOS App开拓的末了阶段来详解如何在真机上进行调试,将App发送给其他测试职员进行内测,以及内测完成后如何将App上传至App Store进行运用审核,针对苹果账号的类型、真机调试、打包与崩溃网络进行深度阐发。
苹果账号的类型
苹果开拓者操持分为个人、公司、企业和教诲开拓者四个类型。个人开拓者证书用度为$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都会无法连续利用。
这些开拓者账号的申请都须要一个主要的条件,那便是有一张支持Visa或MasterCard的信用卡。
真机调试
利用真机调试,必须要利用开拓者证书,以及精确填写App ID,配置好Provision Profile,详细流程如下:
安装调试证书; 填写App ID; 根据App ID填写Provision Profile ,并下载安装到Xcode; 真机调试运行。 若何申请开拓者证书?须要下列几步:
1. 要求CSR文件
2. 创建调试证书
3. 双击安装
可以看到钥匙串中有了我们刚安装的证书,左侧有个三角,点击展开可以看到证书私钥,如果没有私钥,则证书是不可用的。一样平常这种情形是你在开拓者网站高下载了其他Mac上制作的证书,可以从这台Mac导出证书安装到自己的电脑上。
创建App ID
1. 填写App ID Name
2. 支持推送、Game Center等功能的话,不能创建含有通配符的AppID,以是这里我们选择Explicit App ID。
3. 勾选须要的做事,然后Continue。
添加设备
1. 填写设备名称、设备UDID
2. Register
注:最多添加100台设备。创建Provisioning ProfileiOS App Development:真机调试Profile(须要选择iOS设备,只有包含的设备可以真机调试); App Store:上传到App Store商店Profile ; In House:企业内发布Profile(所有设备可以安装); Ad Hoc:Ad Hoc Profile(须要选择iOS设备,除了只有包含的设备可以安装外,与AppStore、Inhouse版本基本没有差异)。1. 选择App ID
2. 选择证书
3. 选择设备(只有Development、AdHoc须要选择设备)
4. 填写Profile Name
5. 点击Download下载,双击安装到Xcode。
XCode打包
Configurations
默认Configurations包含两个配置:Debug、Release,可以看到Build Setting里好多配置都区分了Debug、Release,可以根据不同的情形配置不同的选项,最常用的便是根据真机调试、打包发布,分别在Debug、Release选择得当的证书、Profile。
个人认为,现在的Xcode不用在Duplicate Release配置来建立专门打包App Store、Adhoc或其他的Configuration,由于并不会方便多少,只是省去了选择证书,但是还得设置Archive选项。
一样平常来说,Adhoc、AppStore\Inhouse,二者用的都是同一个证书,只是Profile不同而已,大略的选择一下Profile,是不是更省事一些呢。
指令集
先说一下iOS设备的指令集:
arm64
iPhone 5S、iPhone 6、iPhone 6 Plus iPad Air、iPad Air 2 iPad Mini 2、iPad Mini 3armv7s
armv7
iPhone 3GS、iPhone 4、iPhone 4S iPad、iPad 2、iPad 3、iPad Miniarmv6
Architectures:该编译选项指定了工程支持哪些指令集,如果支持的指令集数目有多个,就会编译出包含多个指令集二进制包,造成终极编译的包很大。Valid Architectures:该编译项指定可能支持的指令集,该列表和Architectures列表的交集,将是Xcode最终生成二进制包所支持的指令集。如上图所示,Architectures支持的指令集为armv7、arm64,Valid Architectures支持的指令集为armv7、armv7s、arm64,这时只会天生一个armv7、arm64指令集的二进制包。
Build Active Architecture Only:该编译项用于设置是否只编译当前利用的设备对应的arm指令集。 常日情形下,该编译选项在Debug模式都设成YES,Release模式都设成NO。把稳:许多用户可能会创造自己的运用安装不了,这时候可以看看自己的App支持的指令集,碰着过几个用户的指令集只支持arm64,这样的App在设备不是arm64的情形下是安装不了的。 Code Signing上图中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首先须要选择ipa版本,导出App Store/AdHoc/企业版ipa,然后点击Next。如果Xcode 没有登录企业开拓者账号,选择导出企业版ipa的时候会提示添加企业开拓者账号到xcode。
选择证书
这里便是上面说的在工程选择的证书、profile可能并不是署名用的,关键在这里,这里会显示已经添加到Xcode的开拓者账号对应的证书列表,可以选择署名用的证书。如果跟工程设置的证书同等,并且Profile匹配,则会根据工程配置的证书、Profile来署名导出。如果跟工程配置的证书不一致,则会根据选择的证书自动查找匹配的Profile来署名导出ipa。
这里会显示导出的ipa用的是哪一个证书、Profile署名的,Profile阁下那个箭头并不是选择Profile,然后在Finder中显示当前Profile。 以是导出的末了一步,只管即便确认一下署名的证书、Profile是不是自己指定的。
内测分发ipa文件
内测分发ipa文件给测试职员紧张有3种方法:
利用iTunes将iPa同步得手机中; 利用itms-services协议进行下载分发; 利用第三方工具进行下载分发。请把稳,无论利用何种形式分发,内测的人数限定,以及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而带来的额外事情量,可以利用第三方工具,将ipa快速地进行内测分发。
本文整理自:【技能公开课】iOS App研发的末了冲刺:内测与支配(点击链接,不雅观看视频),演讲PPT>>下载地址。
作者简介:
纪承,80后开拓者,从业6年,现任fir.im工程师,爱折腾,爱编程。毕业于重庆邮电大学,曾卖力重庆移动多个项目开拓掩护。
预报:2015中国移动开拓者大会(MDCC 2015)将于10月15-16日在北京新云南皇冠假日酒店召开。大会特设五大技能专场:平台与技能iOS、平台与技能Android、产品与设计、游戏开拓、企业移动化。此外,大会更是首次举办海内极具威信影响力的IoT技能峰会,特设硬件开拓技能与虚拟现实两大专场。大会将聚拢海内最具实力的产品技能团队,与开拓者一道进行最前沿的磋商与互换。
第一韶光节制最新移动开拓干系信息和技能,请关注mobilehub公众年夜众微旗子暗记(ID: mobilehub)。