[转]Mac App distribution in App Store
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间的关系图:

另外,说明一下,有时候下载完证书并添加后,在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上了。
[转]Mac App distribution in App Store的更多相关文章
- App开发到App Store上架,发布流程。
		
http://blog.csdn.net/wojsg001/article/details/12005887 App开发到App Store上架,发布流程. 分类: IOS2013-09-25 11 ...
 - App Distribution Guide (二)
		
Configuring Your Xcode Project for Distribution You can edit your project settings anytime, but som ...
 - App Distribution Guide (一)
		
This guide contains everything you need to know to distribute an app through the App Store or Mac Ap ...
 - App Distribution Guide--(三)---Configuring Your Xcode Project for Distribution
		
Configuring Your Xcode Project for Distribution You can edit your project settings anytime, but some ...
 - [App Store Connect帮助]四、添加 App 图标、App 预览和屏幕快照(1)App Store 图标、App 预览和屏幕快照概述
		
您可以为您的 App Store 产品页提供有关您 App 的 App Store 图标.三个 App 预览和十张屏幕快照. App Store 图标 您必须提供一个 App Store 图标,用于在 ...
 - apicloud 上传/更新App版本到 ios store 流程步骤
		
app更新 上传APP的地址: https://itunesconnect.apple.com/login 苹果开发者中心: https://developer.apple.com/ app正式包更新 ...
 - iOS App Store上架新APP与更新APP版本
		
iOS App Store上架新APP与更新APP版本 http://www.jianshu.com/p/9e8d1edca148
 - 【转】APP被苹果App Store拒绝的N个原因(持续补充)
		
作为iOS开发者,估计有很多都遇到过APP提交到App Store被拒,然后这些被拒的原因多种多样,今天dApps收集了常见的被拒的原因,以便更多开发者了解. 1.程序有重大bug,程序不能启动,或者 ...
 - APP被苹果App Store拒绝的79个原因【转】
		
作为iOS开发者,估计有很多都遇到过APP提交到App Store被拒,然后这些被拒的原因多种多样,今天dApps收集了常见的被拒的原因,以便更多开发者了解. APP被苹果APPStore拒绝的各种原 ...
 
随机推荐
- 文成小盆友python-num11-(2) python操作Memcache Redis
			
本部分主要内容: python操作memcache python操作redis 一.python 操作 memcache memcache是一套分布式的高速缓存系统,由LiveJournal的Brad ...
 - python 多层装饰器
			
25.多层装饰器: 1.原理:执行顺序从上往下,#2和#3组成一个函数假设为nf1,#1和nf1组成一个函数nnf1 f1成为ck_ty_of_us的inner函数即nf ...
 - asp.net mvc+EF 递归生成树结构返回json
			
0.数据表结构,主要属性有:Id.parentId(父节Id).Text.Url……等等. 1.新建一个树结构MenuModels public class MenuModels { private ...
 - angularJs项目实战!04:angularjs的性能问题
			
上一篇文章中我花了很多口舌去介绍angularjs是一个中型框架,面对大型应用时少不了第三方类库的配合.而我的核心议题是:如何以angularjs的思路使用其他类库,这里jquery是最好的例子了,谁 ...
 - [51单片机]18B20驱动函数
			
/**********DS18B20.h**********/ #include "REG52.H" #include "INTRINS.H" sbit DQ ...
 - 转:CFile.Open()的使用说明
			
在程中碰到这个一段代码: 讲的是CFILE类的文件操作,故参考MSDN系统学习一下(翻译了一下英文): CFile file;CFileException fe; //打开文件if(!file.Ope ...
 - 关于tcc、tlink的编译链接机制的研究
			
1.学习过程 在c:\下建立文件夹c,并将编译器tcc.exe.连接器tlink.exe.相关文件c0s.obj.cs.lib.emu.lib.maths.lib放入文件夹中. 要搭建一个简单的C语言 ...
 - CentOS下安装postgresql
			
一.说明 postgresql版本:9.4.1 安装包: postgresql94-server-9.4.1-1PGDG.rhel6.x86_64.rpm postgresql94-libs-9.4. ...
 - Xamarin.Forms App Settings
			
配合James Montemagno的Component [Settings Plugin],实现Xamarin.Forms的设置. 更新系统配置且不需要进行重启app. 方式一xml Xamarin ...
 - 转载-常用API接口签名验证参考
			
原文地址: http://www.cnblogs.com/hnsongbiao/p/5478645.html 写的很好,就做个笔记了.感谢作者! 项目中常用的API接口签名验证方法: 1. 给app分 ...