iOS 打包上传AppStore相关(2)-Xcode相应配置

时间:2020-11-30 14:57:51

  上一篇描述了如何在AppleDeveloper创建Certificates、App IDs和Provisioning Profiles的过程。本篇将详细描述在Xcode部分我们需要做的配置。

1.配置BundleID和Version

iOS 打包上传AppStore相关(2)-Xcode相应配置

  打开你的项目,在TARGETS下面我们有一个东西需要填写。

1.1 Bundle Identifier:项目标识符

  请与你上文创建AppID时候输入的Bundle Identifier保持一致。这是你项目的唯一标识符,iPhone如何识别你的项目就是依赖这个标识符。

1.2 Version:项目版本号(CFBundleShortVersionString)和Build:当前版本号的项目构建次数(CFBundleVersion)

  Version也就是在AppStore上我们让用户看到的版本号。我们一般设置为2位或者3位,如1.0和1.0.1。若是初次上线的项目,一般我们设置为1.0或者1.0.0;若是项目更新,我们需要设置版本号比上一次的高即可。

  Build可以理解为项目版本号的版本号,也就是说,1.0版本的项目,我们可能在测试和上线的过程中由于Bug修改或者审核被拒等各种原因出现了内容不同的项目,但这些项目都是1.0版本的项目,因为最终只有一个构建版本得以上线。换句话说,这就是方便我们程序员对手头项目的版本控制的,与AppStore中用户看到的版本号无关。

  最终成型的构建版本可能是这个样子:你的项目名 Versiong(Build) 例如: WangYiNews 1.0.0(1.0.1)

  另外Build和Version两个号可以不等,应该说大多数时候都是不相等的。现在我们可以填写1.0或者1.0.0,都可以。

1.3 Team:这个就是你的工作组的账号

  能打包上传AppStore的,至少是$99的个人或企业账号;个人账号不用说,只有一个账号允许上传,直接登录并选择自己的账号即可;若是公司账号,你是Agent级别的你就选自己的账号;若是工作组成员级别,你就登录个人账号之后,选择工作组的账号即可。关于账号的内容,我会在下面详写。

1.4 另外,我们可以设置Bundle Name和Bundle Display Name

  默认情况下,我们的Bundle Name和你的项目名称是一致的,因为它的设置为 $(PRODUCT_NAME) 。这个的意思就是获得项目名称。而若Bundle Display Name不设置的话,安装后的App名称就是这个Bundle Name。不过因为这个Bundle Name与你的项目息息相关,所以我们一般不通过它来修改App的Name。在info.plist里面加这样一个key:Bundle Display Name,它的value就是展示在用户面前的名称,优先级高于Bundle Name。我们可以通过设置它,来改变产品名称。

2.账号配置

  点击(command + ,),或者左上角 Xcode -> Preference -> accounts,跳到下面的界面

iOS 打包上传AppStore相关(2)-Xcode相应配置

  上面说了,你如果想要打包上架,你需要先有一个$99的付费账户。苹果的账户有什么区别呢?

2.1 未付款账户(Free)

  也就是没有加入Apple Developer Program苹果开发者计划的用户。你注册了Apple ID之后的默认权限。这样的权限在Xcode7之后允许进行有时间限制的真机测试内容,一半时间限制为7天;在Xcode7之前什么都做不了。对应的,在上图右下部分,Team会显示如上图所示的(Personal Team) 个人团队,而Role部分会显示Free 免费。

2.2 $99用户又分为两种

  个人账号(Individual)

  费用$99一年, 该账号在App Store销售者只能显示个人的ID,比如zhitian zhang,单人使用。个人账号只能有一个开发者。100个苹果的iOS设备UDID测试。

  公司团队账号 (Company/Organization)

  费用$99一年, 该账号在App Store销售者可以显示类似Studios,或者自定义的团队名称 ,比如Mamshare INC,公司账号可以允许多个开发者协作开发,比个人多一些帐号管理的设置,可以设置多个AppleID,分4种管理级别权限,详细见备注。100个苹果的iOS设备UDID测试。但是申请时需要填写公司的邓白氏编码(D-U-N-S)。

  

  备注:

  Admin Legal权限:超级管理员。可以管理开发者和管理app store中的应用。

  Admin权限:管理员,可以管理开发者。添加测试机子和管理团队证书。

  Member权限:是普通开发者。只能下载证书和使用证书

  No Access权限:没有相应的权限。

  

  申请公司团队账号地址:http://developer.apple.com/programs/ios/ 详细流程

  邓白氏编码(D-U-N-S)申请地址:https://developer.apple.com/ios/enroll/dunsLookupForm.action

2.3 企业账号 (Enterprise)

  费用$299一年, 该账号开发应用不能发布到App Store,只能企业内部应用,苹果的iOS设备UDID数量不限制。企业账号适合不希望上线App Store,但是需要企业内部比如1000人的iOS设备都部署。公司测试部门需要全公司测试设备,突破100个UDID的限制。这样的账号是知名企业才可以申请的,比如世界五百强这样的级别;同样需要邓白氏编码。

2.4 教育账号(University)

  费用$0,只能教育机构或学院内部使用。必须是苹果iOS开发者计划授权机构。不能对外正式发布iOS应用程序。更为少见。

  用一张图来形容下不同账号间的权限与费用:

iOS 打包上传AppStore相关(2)-Xcode相应配置

  好了,了解了账号的分类,我们还要清楚一点,一个AppleID是允许同时加入多个工作组的。也就是说,我个人是免费用户(Free),我自身有一个(Personal Team);但我同时加入了一个公司团队(Company/Organization)。这样我的账号就会出现两个Team,分属不同的权限。而我要打包上传的时候,自然选择权限为公司团队账户的Admin权限的Team,来打包上传。这就是第一条,配置BundleID时候的Team选择问题。

  言归正传,了解了这么多,我们再看刚才我的账户界面,很明显看出,我是一个免费用户;但我加入了一个公司团队,并且权限为仅次于Admin Legal的Admin级别,可以管理并创建证书等等等等。好了,我们选择这条team,点击右下角的View Details,然后等待它的加载(所有涉及苹果的网站都需要连接跨国服务器,所以慢的很啊,无形中考验了iOS开发者的心理素质)。

  加载完毕后出现如下的界面:

iOS 打包上传AppStore相关(2)-Xcode相应配置

  左上角的账户处,你就会发现苹果的命名规则了:上面加粗的为你的团队名,下面则是你的私人账号名。Signing Identities中,我们主要关注有关iOS的Development和Distribution有没有设置好,不然就Create或者Reset一下;其余不用处理。重要的在下面。

  你会发现,你在AppleDeveloper网站中,配置的Provisioning Files会出现在下面。这就是为何我在上面中讲你可以直接Download下来双击,也可以什么都不做。我们可以在这里对描述文件进行下载处理。

  好了,选中你创建的配置文件,Development也好Distribution也好ADHoc也好,点击Download,在下载完成后点击Done。

  或者你不放心的话,右键点击一个下载好的Provisioning Files,点击Show in Finder,然后将全部的配置文件Move to Trash,最后回来Download All下载当前Team下的全部描述文件。这样就没什么问题了。点击Done,账号配置方面,就全部处理完成了。

3.配置发布证书

iOS 打包上传AppStore相关(2)-Xcode相应配置

  在如上图所在的位置,TARGETS -> Build Settings -> Code Signing 处,Code Signing Identity选择你创建的Certificates证书iOS Distribution:XXXX,下面的Provisioning Profile选择你创建的描述文件(现在可以直接选择Automatic,这样Xcode会根据你的Bundle ID和你选择的打包方式自动选择可选合适的描述文件)。这样,发布证书就配置完毕了。

4.设置真机调试状态

iOS 打包上传AppStore相关(2)-Xcode相应配置

  注意看左上角的位置。点击它跳转到下面的界面:

iOS 打包上传AppStore相关(2)-Xcode相应配置

  将Run状态下的Debug(调试)修改为Release(发布)。同时观察Archive下是否为Release,如果不是,改为Release。注意:在打包完成后,若你需要继续开发你的项目,请将Run调回Debug。

  关于Release和Debug的区别:

  1.Debug版本:调试版本,通过一系列编译选项的配合,编译的结果通常包含调试信息,而且不做任何优化,以为开发人员提供强大的应用程序调试能力。
  2.Release版本:发布版本,是为用户使用的,一般客户不允许在发布版本上进行调试。所以不保存调试信息,同时,它往往进行了各种优化,以期达到代码最小和速度最优。为用户的使用提供便利。

  并且,Release模式下无法使用NSLog以及用鼠标指着关键字无法查看具体信息。

5.打包

  做好上述的一切之后,做下面这两步:

5.1 设置为Generic iOS Device

iOS 打包上传AppStore相关(2)-Xcode相应配置

5.2 备份

iOS 打包上传AppStore相关(2)-Xcode相应配置

6.备份完成

  经过漫长的备份过程之后,我们到了这样的一个界面:

iOS 打包上传AppStore相关(2)-Xcode相应配置

  注意观察,左边的App列表是根据Bundle Identifier来区分备份所属的App的;中间和右侧中部的Version,是不是你刚才设置的 Version(Builde) 的格式;再看右侧蓝色的按钮 Upload to App Store.. 是不是以为成功离你只有一步之遥了?别急,先 Valiate... 让系统帮你确认一下。

iOS 打包上传AppStore相关(2)-Xcode相应配置

  当出现这个界面,选择你有权限的团队名称。以后再Export或者Upload...或者其他各种情况的时候,都有可能跳出这样一个选择框,不再赘述。选择完毕后,点击Choose。

  又是漫长的等待。但结果并不那么让人欣喜,因为我们还有一些步骤没有做。

  它会提示你 No Matching Application...

  为什么?我不是已经创建证书配置文件了吗?原因很简单,你还没有给这个App版本添加描述信息。这牵扯到这个网站iTuns Connect。包括这个网站的设置,以及最后的一些上传流程,还有一些打测试包分发链接的流程,下一篇再讲。