最近一个老项目需要更新迭代,一个新的项目需要上线。有一些自己出现的BUG,也有一些没搞懂到处翻资料的问题。在此想做一个总结,写一下总体步骤,尽可能的详细一些,以及自己的一些理解。有很多步骤因为我们查阅的资料在作者可能无意间觉着是个小问题就跳过去了,然而给我们带来了许多麻烦。会将我遇到的问题都写出来,也会随时修改添加。感谢大家。

1.首先,我们需要一个苹果开发者的付费账号

  https://developer.apple.com/ 去这个网站申请,至于$99或$299看你自己或公司的经济实力了。同时我们本篇讲述的有关证书、配置文件等的一切都在这个网站的 Certificates, Identifiers & Profiles 这个选项中进行。

2.创建发布者证书 Certificates

  打开 苹果开发者 官网,登陆上账号。

  点击左侧的 Certificates, Identifiers & Profiles 按钮,或者中间的 Certificates, Identifiers & Profiles 按钮都可以,进入创建证书的界面。

  进来之后默认即处在创建证书的界面:

  首先我想先谈一下我对这个 Certificates 的理解。起初我认为这个 Certificates 证书是跟你要发布的App有关系的,也就是认为这个Certificates与你的App是唯一绑定的。后来发现确实绑定,但互不为唯一。因为查阅的许多资料都没有谈过这个证书,所以导致我开始理解Certificates和Provisioning profiles之间的关系理解不对。

  我是这样理解这个问题的:Certificates是你这个Apple Developer的ID对你使用电脑的授权,也就是说,拥有Certificates证书的电脑可以对拥有证书的类型对这个账号上的App进行一些处理,比如打包发布或者真机、打包测试等等。每一个Apple Developer的ID对应每一台电脑都需要创建一个这样的证书,也就是这个证书里包含你的Apple Developer的ID信息和电脑的信息,但不包含你要发布的App的信息。

  以上仅仅针对于发布和测试相关的App Store and Ad Hoc打包发布/测试证书和iOS App Development测试两个证书。

  好了,知道了Certificates的作用之后,我们来创建一个Certificates。

  点击 + 号,跳转至创建Certificates的界面

  这里有很多Certificates可以创建。Development选项下的iOS App Development证书是配置测试证书的,是真机测试用的。可能有些人觉着我没有这个证书依然可以真机测试,确实,在Xcode7之后是这样的,从 Xcode 7 开始支持普通 Apple 账号进行免证书真机调试。但区别在于,没有这个证书你真机测试的应用是有期限的,一般是七天。

  最下面的那个证书,Apple Push Notification Authentication Key,很明显是使用APNs进行推送的证书。现在我们暂时用不到。

  我们这次的任务是打包上传,所以我们需要选择“Production”下的“App Store and Ad Hoc”一项。这个证书是配置打包证书的。有了它你就可以将你的App打包成update AppStore或者测试用的ipa包。

  在此解释下为什么我的这两个选项是灰色不可选的。苹果开发者账号有两种,个人级别与企业级别。它们可以创建的这两种证书的数量是不同的,但都是有限的,两个或者三个。所以解决方法就是revoke删除掉一个相对应的证书即可。

  我们选择App Store and Ad Hoc,点击continue,进入下一个界面。

  这里它让我们创建一个Certificate Singing Request,证书签名请求文件。这个文件的作用是什么呢?刚才我说证书是一个AppleID授权一台电脑测试或发布的权限,那AppleID怎么确认是哪一台电脑呢?或者说,AppleID怎么获得这台电脑的信息呢?就是这个文件了。

  回到我们的电脑,相信大家都是Mac。打开钥匙串(在F4键中的“其他”中,或者F4直接搜索“钥匙串”),找到这个界面:

  出现这个界面:

  用户邮箱必填,填你的AppleID账号对应的邮箱,其余都可选。最后选择存储到磁盘,继续,会提示你存储位置。选择存储,我们就可以获得这样一个文件。

  是不是对这个名称很眼熟?眼熟就对了,这就是我们需要的CSR文件。

  回到刚才那个界面,点击continue,在下个界面中做如下操作:

    点击Generate,在新的界面会看到你创建好的证书。点击download,下载到桌面:

  双击这个文件,然后你就可以在你的“钥匙串”中找到它了。

  注:一般一个开发者帐号创建一个发布证书就够了,如果以后需要在其他电脑上上架App,只需要在钥匙串访问中创建p12文件,把p12文件安装到其他电脑上。这相当于给予了其他电脑发布App的权限。

  这样,Certificates证书,就创建并安装好了。

  

3.创建App IDs

  刚才我们创建的是证书,也就是AppleID对电脑的授权。接下来我们要创建与我们的App相关的东西了。

  回到 Certificates, Identifiers & profiles界面,点击Identifiers下面的App IDs,出现的是你所有的App IDs。

  同样的,点击“+”号进入创建界面:

  需要添加的就是 App ID Description 下的 Name。和下面App ID Suffix下的Explicit App ID中的Bundle ID。Name是你对这个App ID的描述,纯英文输入,一般起名为你的工程名,是给你自己看的标识符。而下面的两种App ID,就是我们所创建的App ID了。两者有什么区别呢?

  App ID 全名会被追加 Application Identifier Prefix(一般为 TeamID.),分为两类:

  • Explicit App ID:唯一的 App ID,用于唯一标识一个应用程序。例如“com.apple.garageband”这个 App ID,用于标识 Bundle Identifier 为“com.apple.garageband”的 App。
  • Wildcard App ID:含有通配符的 App ID,用于标识一组应用程序。例如“*”(实际上是 Application Identifier Prefix)表示所有应用程序;而“com.apple.*”可以表示 Bundle Identifier 以“com.apple.”开头(苹果公司)的所有应用程序。
  用户可在 Developer Member Center 网站上注册(Register)或删除(Delete)已注册的 App IDs。
  根据个人情况,选择合适的APP ID。Explicit下Bundle ID就是你的工程中的Bundle ID,此Bundle ID唯一。如果你注册时候出现这样一个错误:
  说明你的Bundle ID被人注册成App ID了,换一个就可以了。
  在这里我选择Explicit App ID。
  下面选择你需要的服务,默认选择Game Center和In-App Purchase两项。表示分别在GameCenter和AppStore中上线。一般我们也选上Push Notifications这一条,因为推送是一般App都需要的功能。
  选择完成之后,就到了这样一页:
  

  确认你的选择。Enabled表示能够使用,Disabled表示不能使用。如果你刚才勾选了Push Notifications,这里的Push Notifications那一条会提示Configuration,表示尚未配置,需要配置一些信息方可使用。这里不再赘述。我们点击Register。在下一个界面点击Done。一个新的App ID就创建成功了。你可以返回Identifiers - All 找到你的App ID。

4.创建Provisioning Profiles

  好了,到了最后一步了。

  这个Provisioning Profiles是干什么用的呢,它包含之前我们创建的所有的,Certificates、App ID和你的AppleDeveloper账号的信息,还根据自身的不同类型包含一些其他信息,比如测试环境下测试手机的UDID等等。只有这些信息全部准确无误之后,才可以将工程成功打包,并且在测试手机上或者上传到AppStore的时候准确无误。

  接下来我们来创建一个发布用的Provisioning Profiles。

  

  如上图所示来到创建Provisioning Profiles的界面。

  与我们有关的有三个。首先是Development下的iOS App Development文件。这个证书是测试文件,与上面的测试证书配套,属于真机测试的配套文件。

  Distribution下面的App Store,不多介绍,看名字就懂了。打包上传App Store使用的。

  Ad Hoc。这个是做测试包分发使用的,包含测试手机的UDID。以后会讲如何利用它打测试包生成短连接和二维码供测试人员安装。

  选择App Store选项,点击continue。接下来,选择你的App ID,continue,选择你创建的证书Certificates,continue,起个名字。我们一般起 项目名+文件类型,如 XXXADHoc 等等。

  创建成功,download下载,然后双击打开,安装成功。或者现在不下载,以后会讲另外一种配置条件文件的方式。

  与打包上传AppStore的关于AppleDeveloper这个网站的事情我们就做完了。下一次会讲与Xcode相关的问题。

iOS 打包上传AppStore相关(1)-相关证书配置的更多相关文章

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

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

  2. iOS 打包上传AppStore相关(3)-iTunes相应配置以及使用蒲公英网站进行应用托管分发(链接/二维码)

    上一篇讲到我们最终生成了一个格式为 .xcarchive 的文件(可以右键并Show in Finder)查看.本篇我们就进行最后的设置,打包上传.另外,还有一个小福利,那就是打测试包分发链接测试. ...

  3. Windows环境下IOS APP打包上传AppStore详细流程

    我们知道在上架苹果应用过程中,申请发布证书需要用到钥匙串,上传ipa需要用到xcode或Application loader提交构建版本,这都需要Mac苹果机. 本文介绍如何在Windows环境下申请 ...

  4. iOS工程上传AppStore时遇到的问题“ERROR ITMS-90046”解析

    在我们将代码写完整,测试没有bug之后,我们就可以将它上传到AppStore了,上传的过程只要操作正确并不会有太大的问题,但是打包的过程中会出现一些小问题,导致打的包不能上传或者上传的时候会出现错误. ...

  5. iOS -打包上传成功,在"构建版本"一直刷不出来

    今天提交版本到appstore,构建版本一直不出来,等了一天也没有出来,其实就是权限问题,iOS13 来了,所以面临的问题随之而来,苹果给邮箱发了这段话: Dear Developer,We iden ...

  6. [iOS Xcode8]上传AppStore 无法构建版本 没有➕号

    最近iOS10出来了 Xcode也跟着升级到了8 想着App做个更新 于是修改好了代码打算上传新包 ,无奈总是发现构建不了新版本 经过各种蛋疼的查找.我列一下我的经验 1.如果是收费的App,那么是要 ...

  7. iOS打包上传问题

    iOS 打包不成功的原因: 1.打包时在下图 code signing没有选择发布证书 2.没有配置好pp文件 3.targets-> general 和 setting设置的签名方式不一样,要 ...

  8. iOS开发应用上传AppStore的步骤

    原文:http://blog.csdn.net/ayangcool/article/details/46647693   前言:作为一名IOS开发者,把开发出来的App上传到App Store是必须的 ...

  9. [iOS Xcode8]上传AppStore无法添加构建版本

    最近升级到xcode8了,也遇到了一些问题.最近产品需要更新版本,按照以前的流程,我觉得so easy啊,万万没想到啊,这次更新版本差点让我吐血,来来回回不下七次. 首先问题是版本通过xcode上传到 ...

随机推荐

  1. Python学习笔记——基础篇【第一周】——变量与赋值、用户交互、条件判断、循环控制、数据类型、文本操作

    目录 Python第一周笔记 1.学习Python目的 2.Python简史介绍 3.Python3特性 4.Hello World程序 5.变量与赋值 6.用户交互 7.条件判断与缩进 8.循环控制 ...

  2. 安卓工程中定义的app_name等报错解决办法 工程上有叹号

    类似于"app_name" is not translated in af, am, ar, be, bg, ca, cs, da, de, el, en-rGB, es, es- ...

  3. div套div 里面div有浮动 外面div自适应高度

    <div style="background-color:red;"> <div style="float:left;background-color: ...

  4. UNIX基础--Manual Pages

    联机手册 Manual Pages 最详细的使用说明文档莫过于 FreeBSD 里的联机手册了. 几乎每一个程序都会附上一份简短说明, 以介绍这个程序的的基本功能以及参数的用法. 我们能通过 man ...

  5. python hmac-sha1

    def getSignature(Token,paramss1): s = getParam(paramss1) print(s) # for k, v in paramss1.items(): # ...

  6. python2与python3

    一.print python2 print  "hello world !" python3 print("hello world!") 二.字符编码 pyth ...

  7. js string 转 int 注意的问题——parseInt

    < script > var str = '1250';alert(Number(str)); //得到1250 alert(parseInt(str)); //得到1250 var st ...

  8. 学习自动化工具gulp

    <什么是gulp>官网地址:http://gulpjs.com/ gulp是可以自动化执行任务的工具,在开发流程里,一定有一些动作需要手工的重复的去执行,例如: ·把一个文件拷贝到另外一个 ...

  9. 验证码计时 -- UIButton setTitle 闪烁问题解决方案

    首先,有各种版本 方法一: 我运用的一种极其简单的版本:  将UIButton的Type 设成 Custom 就不会有闪烁的问题重现 p.p1 { margin: 0.0px 0.0px 0.0px ...

  10. Android中帧动画的创建

    帧动画,实质上就是快速播放多张连接效果的图片,现在一般可用于下拉刷新时候的headView 实现步骤: 1.首先应该准备一组连接效果的图片 2.在res>drawable目录下创建xml文件,将 ...