[转]Mac App distribution in App Store

时间:2022-09-30 17:17:32

Mac程序的大包上传和iOS的有些许不同,因为Mac app既可以上传到store,也可以不通过store供人下载。因此,code sign和provision要根据情况(开发,release<store 还是非store>)制作。在程序打包后,验证程序的可行性上,也有所不同。下面,就将一些要点纪录下。

基本概念:

1 成员的权限:

成员还是有三种:

Agent:注册帐号的帐户,最高权限,可以创建developer,Mac installer,Mac App, developer ID App, Developer ID Installer证书。

Admin:可以创建developer,Mac installer,Mac App证书

Member:只能创建developer证书

2 证书:

Development:

team中的成员都能创建的development证书,只要用于开发阶段,通俗的说用于debug版本开发

Distribution:

(1) App Store:

App要放到Store上,就需要创建 Mac App 和 Mac Installer证书。 Mac App主要是用于上传到store, installer是上传到store前我们模拟真实的store环境

(2) Developer ID:

Apple允许开发者自行传播App,这就要用到developer ID的证书,也分App和installer两种。注意,此证书只有agent才能创建,并且一个team也只有一个。

生成证书的方式和iOS下的一样,也可根据官网的提示一步一步操作,就不多说了。

3system

将电脑的硬件号注册下

4App IDs 和Provision

这个和iOS一样,按网页提示操作。provision制作好后拖到xcode中,developer provision还要安装到电脑。 创建App ID时候,要考虑清楚是否需要iCloud,和APNS。建议把这些都配置好,再去创建provisions。否则修改了App ID后,对之前的provision会有影响。如果真的需要修改App ID,建议将旧的provisons删除(包括电脑上和xcode里已安装的文件),再安装新的provision。另外,developer provison可以安装在电脑上(因为含有system信息),production的只能安装到xcode中。

顺便贴一下provison和ID,证书,system间的关系图:

[转]Mac App distribution in App Store

另外,说明一下,有时候下载完证书并添加后,在keychain里会没有key,说明证书有问题。我遇到的情况一般是安装了多个证书导致的,这时一般是通过revoke证书再重新制作解决。

下面主要征对上传到store上的app,说明一下步骤,参考资料来自官方文档

在上传之前,确保已经生成Mac App和Installer的证书,并且准备好production provisions。

另外,对程序本身也有些准备工作,比如设置App Icon,deployment target等等,这些和iOS App一样。由于我们是要上传到store的,因此我们必须要enable sandbox。

因为sandbox的权限通过entitlement来控制的,所以如图:

[转]Mac App distribution in App Store

Network,Hardware,Apps下的选项根据需求来选择,选择后会自动在相应的entitlement文件中生成相应的键值。

接下来选中target后,在code sign下选择合适的provisons(注意debug和release下的选择)。如果发现安装完provision后,xcode选项里没有,可以重启xcode看看。

在archive制作安装包之前,我们确认下schema的设置是否正确:

[转]Mac App distribution in App Store

Archive的配置须是release的。

接下来我们就要选择xcode下的archive功能了,完成后会弹出 Organizer-Archives的窗口,右边有个Distribute的按钮,点击:

[转]Mac App distribution in App Store

1 submit:上传到Store,记得在iTunes connect创建好相应的App,然后选择next,接下来的事就交给xcode。

2 Export Developer:这种是不在store上的distribution

3 Export as:如图,有3种选择。

在上传到store前,我们必须测试安装过程以确保程序能正确安装。这时我们可以选择export as paskage,生成一个安装包,注意这个时候要选择insaller的证书:以你的team名开头,在"Identities without profiles"下。然后利用如下命令:

sudo installer -store -pkg path-to-package -target /

(-store是模拟从App store上安装)

生成的App被安装到/Application下,可以自行查看。

运行测试后没问题,就可以提交到app store上了。