最近一个老项目需要更新迭代,一个新的项目需要上线。有一些自己出现的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相关的问题。