[转]Mac App distribution in App Store

Mac程序的大包上传和iOS的有些许不一样,由于Mac app既能够上传到store,也能够不经过store供人下载。所以,code sign和provision要根据状况(开发,release<store 仍是非store>)制做。在程序打包后,验证程序的可行性上,也有所不一样。下面,就将一些要点纪录下。html

 

基本概念:xcode

1 成员的权限:app

成员仍是有三种:ide

Agent:注册账号的账户,最高权限,能够建立developer,Mac installer,Mac App, developer ID App, Developer ID Installer证书。测试

Admin:能够建立developer,Mac installer,Mac App证书ui

Member:只能建立developer证书debug

2 证书:code

Development:htm

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

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间的关系图:

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

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

 

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

另外,对程序自己也有些准备工做,好比设置App Icon,deployment target等等,这些和iOS App同样。因为咱们是要上传到store的,所以咱们必需要enable sandbox。

由于sandbox的权限经过entitlement来控制的,因此如图:

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

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

在archive制做安装包以前,咱们确认下schema的设置是否正确:

Archive的配置须是release的。

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

 

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上了。