iOS 打包上传AppStore相关(2)-Xcode相应配置
上一篇描述了如何在AppleDeveloper创建Certificates、App IDs和Provisioning Profiles的过程。本篇将详细描述在Xcode部分我们需要做的配置。
1.配置BundleID和Version
打开你的项目,在TARGETS下面我们有一个东西需要填写。
1.1 Bundle Identifier:项目标识符
请与你上文创建AppID时候输入的Bundle Identifier保持一致。这是你项目的唯一标识符,iPhone如何识别你的项目就是依赖这个标识符。
1.2 Version:项目版本号(CFBundleShortVersionString)和Build:当前版本号的项目构建次数(CFBundleVersion)
(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,跳到下面的界面
上面说了,你如果想要打包上架,你需要先有一个$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应用程序。更为少见。
用一张图来形容下不同账号间的权限与费用:
好了,了解了账号的分类,我们还要清楚一点,一个AppleID是允许同时加入多个工作组的。也就是说,我个人是免费用户(Free),我自身有一个(Personal Team);但我同时加入了一个公司团队(Company/Organization)。这样我的账号就会出现两个Team,分属不同的权限。而我要打包上传的时候,自然选择权限为公司团队账户的Admin权限的Team,来打包上传。这就是第一条,配置BundleID时候的Team选择问题。
言归正传,了解了这么多,我们再看刚才我的账户界面,很明显看出,我是一个免费用户;但我加入了一个公司团队,并且权限为仅次于Admin Legal的Admin级别,可以管理并创建证书等等等等。好了,我们选择这条team,点击右下角的View Details,然后等待它的加载(所有涉及苹果的网站都需要连接跨国服务器,所以慢的很啊,无形中考验了iOS开发者的心理素质)。
加载完毕后出现如下的界面:
左上角的账户处,你就会发现苹果的命名规则了:上面加粗的为你的团队名,下面则是你的私人账号名。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.配置发布证书
在如上图所在的位置,TARGETS -> Build Settings -> Code Signing 处,Code Signing Identity选择你创建的Certificates证书iOS Distribution:XXXX,下面的Provisioning Profile选择你创建的描述文件(现在可以直接选择Automatic,这样Xcode会根据你的Bundle ID和你选择的打包方式自动选择可选合适的描述文件)。这样,发布证书就配置完毕了。
4.设置真机调试状态
注意看左上角的位置。点击它跳转到下面的界面:
将Run状态下的Debug(调试)修改为Release(发布)。同时观察Archive下是否为Release,如果不是,改为Release。注意:在打包完成后,若你需要继续开发你的项目,请将Run调回Debug。
关于Release和Debug的区别:
1.Debug版本:调试版本,通过一系列编译选项的配合,编译的结果通常包含调试信息,而且不做任何优化,以为开发人员提供强大的应用程序调试能力。
2.Release版本:发布版本,是为用户使用的,一般客户不允许在发布版本上进行调试。所以不保存调试信息,同时,它往往进行了各种优化,以期达到代码最小和速度最优。为用户的使用提供便利。
并且,Release模式下无法使用NSLog以及用鼠标指着关键字无法查看具体信息。
5.打包
做好上述的一切之后,做下面这两步:
5.1 设置为Generic iOS Device
5.2 备份
6.备份完成
经过漫长的备份过程之后,我们到了这样的一个界面:
注意观察,左边的App列表是根据Bundle Identifier来区分备份所属的App的;中间和右侧中部的Version,是不是你刚才设置的 Version(Builde) 的格式;再看右侧蓝色的按钮 Upload to App Store.. 是不是以为成功离你只有一步之遥了?别急,先 Valiate... 让系统帮你确认一下。
当出现这个界面,选择你有权限的团队名称。以后再Export或者Upload...或者其他各种情况的时候,都有可能跳出这样一个选择框,不再赘述。选择完毕后,点击Choose。
又是漫长的等待。但结果并不那么让人欣喜,因为我们还有一些步骤没有做。
它会提示你 No Matching Application...
为什么?我不是已经创建证书配置文件了吗?原因很简单,你还没有给这个App版本添加描述信息。这牵扯到这个网站iTuns Connect。包括这个网站的设置,以及最后的一些上传流程,还有一些打测试包分发链接的流程,下一篇再讲。
iOS 打包上传AppStore相关(2)-Xcode相应配置的更多相关文章
- iOS 打包上传AppStore相关(3)-iTunes相应配置以及使用蒲公英网站进行应用托管分发(链接/二维码)
上一篇讲到我们最终生成了一个格式为 .xcarchive 的文件(可以右键并Show in Finder)查看.本篇我们就进行最后的设置,打包上传.另外,还有一个小福利,那就是打测试包分发链接测试. ...
- iOS 打包上传AppStore相关(1)-相关证书配置
最近一个老项目需要更新迭代,一个新的项目需要上线.有一些自己出现的BUG,也有一些没搞懂到处翻资料的问题.在此想做一个总结,写一下总体步骤,尽可能的详细一些,以及自己的一些理解.有很多步骤因为我们查阅 ...
- iOS工程上传AppStore时遇到的问题“ERROR ITMS-90046”解析
在我们将代码写完整,测试没有bug之后,我们就可以将它上传到AppStore了,上传的过程只要操作正确并不会有太大的问题,但是打包的过程中会出现一些小问题,导致打的包不能上传或者上传的时候会出现错误. ...
- [iOS Xcode8]上传AppStore 无法构建版本 没有➕号
最近iOS10出来了 Xcode也跟着升级到了8 想着App做个更新 于是修改好了代码打算上传新包 ,无奈总是发现构建不了新版本 经过各种蛋疼的查找.我列一下我的经验 1.如果是收费的App,那么是要 ...
- iOS -打包上传成功,在"构建版本"一直刷不出来
今天提交版本到appstore,构建版本一直不出来,等了一天也没有出来,其实就是权限问题,iOS13 来了,所以面临的问题随之而来,苹果给邮箱发了这段话: Dear Developer,We iden ...
- Windows环境下IOS APP打包上传AppStore详细流程
我们知道在上架苹果应用过程中,申请发布证书需要用到钥匙串,上传ipa需要用到xcode或Application loader提交构建版本,这都需要Mac苹果机. 本文介绍如何在Windows环境下申请 ...
- iOS打包上传问题
iOS 打包不成功的原因: 1.打包时在下图 code signing没有选择发布证书 2.没有配置好pp文件 3.targets-> general 和 setting设置的签名方式不一样,要 ...
- iOS开发应用上传AppStore的步骤
原文:http://blog.csdn.net/ayangcool/article/details/46647693 前言:作为一名IOS开发者,把开发出来的App上传到App Store是必须的 ...
- [iOS Xcode8]上传AppStore无法添加构建版本
最近升级到xcode8了,也遇到了一些问题.最近产品需要更新版本,按照以前的流程,我觉得so easy啊,万万没想到啊,这次更新版本差点让我吐血,来来回回不下七次. 首先问题是版本通过xcode上传到 ...
随机推荐
- VS调试的简单技巧
学习之路三十二:VS调试的简单技巧 这段时间园子里讲了一些关于VS的快捷键以及一些配置技巧,挺好的,大家一起学习,一起进步. 这段时间重点看了一下关于VS调试技巧方面的书,在此记录一下学习的内容吧 ...
- 微软必应借PK谷歌突围中国搜索市场
Bing“必应”是微软2009年推出的搜索品牌(http://www.bing.com),它取代的是同门师兄Live Search.进入2013年,在国内及好莱坞的多部大片里面,我都看到了Bing搜索 ...
- oracle 11g使用deferred_segment_creation 延迟段创建特性时遇到的问题总结
总结,下面是两个问题.问题1是用户可以在所有表空间创建表;问题2是exp不能导出空表 问题1: 版本:oracle 11.2.0.1.0 select * from v$version; 创建用户aa ...
- java.io.IOException: Unable to open sync connection!的解决方案
在学习Android的时候,经常是使用手机调试程序,很方便,后来 在使用手机调试程序的时候出现了 [2012-03-08 11:27:43 - Tea_marsListActivity] ------ ...
- Linux设备驱动开发详解-Note(5)---Linux 内核及内核编程(1)
Linux 内核及内核编程(1) 成于坚持,败于止步 Linux 2.6 内核的特点 Linux 2.6 相对于 Linux 2.4 有相当大的改进,主要体现在如下几个方面. 1.新的调度器 2.6 ...
- java中的ArrayList 、List、LinkedList、Collection关系详解
一.基础介绍(Set.List.Map) Set(集):集合中的元素不按特定方式排序,并且没有重复对象.他的有些实现类能对集合中的对象按特定方式排序. List(列表):集合中的元素按索引位置排序,可 ...
- Python第一天 安装 shell 文件
Python第一天 安装 shell 文件 python里面一切都是对象 object 代码缩进:建议用四个空格来缩进,不要用tab键 安装 Linux自带python,windows需要下载m ...
- 学习web之路
一些文章是转接过来,有些是自己原创的.希望大家喜欢,By:xiaohaimian' q:963892669
- ipc 入侵步骤
第一步:建立IPC隧道net use \\10.56.204.186\IPC$ "密码" /user:"用户" 第二步:映射对方c盘到本地z盘net u ...
- Idea高级用法
一.快速打开Action: Ctrl+Shift+A 列表中会列出所有的action,对应于idea的各种操作,例如: 输入backgroud,可以为编辑器设置背景 输入restclient,可以打开 ...