最近一个老项目需要更新迭代,一个新的项目需要上线。有一些自己出现的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. 12.04 css小测div+css...

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. 10s后自动跳转

    <div class="jf_register"> <h2>您好,欢迎光临<fmt:message key="b2cShowName&quo ...

  3. 解决“在UBUNTU下打开windows中创建的文本文件,中文显示乱码”的问题 。

    在UBUNTU下打开windows中用notepad等工具创建的txt或程序源码等文本文件,中文显示乱码,原因是windows中的txt文件编码方式为GBK,UBUNTU中为utf-8. 解决办法:在 ...

  4. ubuntu 10.4非法关机后上不了网

    用的好好的ubuntu 10.4,非法关机后居然上不了网,右上角的网络图标也不见了,还以为是网卡问题,进入xp,发现一切正常,心里不断地诅咒ubuntu,该死的ubuntu,我windows还天天非法 ...

  5. 记一次-angular-数字格式化

    一个收费功能模块,需要做数据验证. input标签的ng-model的数据格式化 <input type="number" class="form-control& ...

  6. 《JavaScript高级程序设计》读书笔记 ---理解对象

    上一章曾经介绍过,创建自定义对象的最简单方式就是创建一个Object 的实例,然后再为它添加属性和方法,如下所示.var person = new Object();person.name = &qu ...

  7. 【转】Matrix67:十个利用矩阵乘法解决的经典题目

    好像目前还没有这方面题目的总结.这几天连续看到四个问这类题目的人,今天在这里简单写一下.这里我们不介绍其它有关矩阵的知识,只介绍矩阵乘法和相关性质.    不要以为数学中的矩阵也是黑色屏幕上不断变化的 ...

  8. python3.4项目打包

    1.首先下载pyinstaller并且解压(就直接解压再桌面就可以,这样子比较方便) 2.然后就去下载pywin32(按照电脑和python的版本去下载) 我电脑是64位的,python是3.4版本的 ...

  9. [妙味Ajax]第二课:实例:留言板、瀑布流

    知识点总结 瀑布流原理(固定布局) 总宽度大小固定 每列宽度固定,比如LI,高度自动计算,每列使用float:left来布局 计算最短的一列,将Div插到最短的一列处(li里面包div)(getSho ...

  10. Lua入门基础

    什么是Lua Lua 是一个小巧的脚本语言.是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Rober ...