2022最新iOS打包、发布与证书体系详解

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 2022最新iOS打包、发布与证书体系详解

教程截图:


iOS开发者提供的文章。他在论坛上是一个很摩登的年轻人 – Adam Eberbach。Bundle identifier


provisioning profiles。


App ID


certificate signing request:


 对于新手,的确很难一口气搞清楚这些东东到底有什么区别。


 下面我们来揭开它们的神秘面纱,在读完这篇文章后,你应该可以把这些东西联系起来,你能够理解它们是怎么工作,并能够顺利地在device上运行你的应用了。


 当然,这里假设你已经是一个iOS开发者,拥有IDP,并已经有一定的xcode和iOS开发经验了。如果你只是刚刚开始学习iOS,你可以先看看其它入门教程。好吧,我们开始了。它们有多重要?


Code signing 对你来说,最主要的意义就是它能让你的App在设备上运行。不管是你自己的设备,甲方客户的,还是在App store上购买你的消费者。


 如果没有code signing,你只可以在模拟器上,或者一台越狱过的机器上运行你的应用----当然,仅仅如此是不能满足我们的。


 模拟器的测试仅仅是一种初步测试,模拟器不能替代真机调试,因为:


·真正的设备会通常比模拟器慢


 模拟器使用的是你的MAC机上的处理器,而一台真正的iphone可远远没有这种条件。所以如果你不在设备上真正运行,你可能就会忽略实际的性能问题。


viewDidLoad里面加入下列代码:

int count =200000;
NSMutableArray * array = [NSMutableArray arrayWithCapacity:count];
for (int i =0; i < count; ++i) {
    [array addObject:[NSString stringWithFormat:@"%d", i]];
}

   上面这段代码在模拟器上可能1-2秒就能运行完,但是在真机上面(比如iphone 3GS),大约要花7秒左右的时间。


·设备的内存少很多


 同理的,模拟器使用你MAC上的内存,而一台真正的iphone的内存少得多。


 特别是游戏,通常会使用大量的图片,占用大量的内存。在老一点型号的机器上,一个纹理图片的大小上限是24MB,也就是1024X1024的8bit纹理图。


 内存耗尽绝对是你不想见到的,因为占用的内存超过一定范围,OS会强行退出你的app,对用户来说,就认为是你的app崩溃了。


·有些API只在设备上有效


譬如In-App purchase的API,或者Instrument中的Core Animation。这些都要在真机上测试出来。(可能以后版本的iOS或者xcode能够支持,但毕竟真机测试是一种保障) 总的来说,你没有在真机上测试过,等于你没有真的测试完。


在Xcode中有一些懒人的方法:


 在organizer的界面中,选中devices 右键Developer Profile,你可以看到这样一个菜单。里面有大部分这篇文章将要讲到的内容。这里你可以sign in你的开发者账号,自动登记你的app并运行到你的device上。当然,如果这样总是好用的话,这篇文章就没有意义了。作为一个开发者,你应该知道更多。Public and Private Keys 公钥私钥在继续剖析之前,我们先简单地解析公钥私钥。


asymmetric cryptography非对称密码。对于对称密码,只有一种key。譬如你有一个密钥,以及对应的一个加密过的信息。那只有知道密钥的人可以解读这个信息。对于非对称密码,有两个key – 公钥和私钥。譬如你用某个私钥加密一些信息,别人收到这个信息后可以通过那个私钥对应的公钥来加密。这样他们就可以肯定,这个信息是从你那里来的(至少是你加密的)。


 而这个,就是在iOS中code signing背后的原理。Code Signing Objects Provisioning Profiles,App IDs,UDIDs …  在这一节,我们会一个一个地解说。 我用Core Data绘制了一个图表,用来描述这些对象之间的关系。Development Profile),发布人员的图会有小小区别。


私钥 Private Key:你可以在 Application\Utilities 中找到。运行Keychain,你可以看到在你的名下有哪些公钥和私钥。类似这样的:


 如果你没有看到任何key的列表,不用担心。在你第一次使用认证的时候,Keychain会帮你创建。


 在这里列出的key是你的provisioning或者code signing的基础。你必须有key才能sign code或者在App store中发布你的app。 如果key丢失了?– 因为没有key,你的认证不再有效,你的provisioning profile只会生成error。你会浪费很多时间,所以,好好保管它。如果你没有备份过,我建议你马上把它export出来,通过File\Export Items ,保存在一个安全的地方,例如一个很小的分区中。或者通过你的Mobile Me账号来同步保存。


有多个Key?如果你在不同的Mac机上创建过account,你将会有多个key。这样会带来一个问题,在机器A上生成的认证,在没有私钥的机器B上会失效。所以,你可以把你所有的key复制到你所有的Mac机上。(这样就不用烦了)或者,我更建议只用一个Key。


UDID


UDID (Unique Device Identifier)是区分物理设备的唯一标识。所有你的iPhone肯定有一个与众不同的UDID,包括你的iPad等等。通常,UDID会是一个40位十六进制字符串。也就是下图的identifier,如果App不是从app store上来,你的代码需要有UDID的信息才能运行。怎么知道你拥有的设备的UDID?有几个方法。


1 如果你的设备连到Xcode的机器上,你可以在Organizer中看到UDID。


2 没有xcode的朋友也可以,在iTunes的 Summary界面,有serial number(序列号)的信息,点击可以看到。


3 这是最简单的方法,在App Store中下载一个App Uploader吧。

170cf2e8be4943379fb69d8d674492ce.png


Certificate 认证


 认证,就是你的个人开发者认证,或者更华丽地说:“Apple Worldwide Developer Relations Certification Authority Certificate”(这不翻译了),


 这个本质上就是一些代表着信任-授权的数据而已。公钥-私钥(如果还没有的话)。


Apple收到后会验证信息,然后给你创建一个认证。


App ID


 在Xcode4中创建一个项目,你要提供 Product Name 和 Company Identifier的信息。


Product Name,就是你的app的一个较短的名称。Company identifier,通常会是一个反转的DNS串,例如:com.mycompanyname,这两者合起来,就似乎Bundle Identifier。你会在Info.plist中找到。


 对于每一个你要发布的app,你需要到iTunes Developer Center中注册你的App ID。如下图。


Info.plist中设置的保持一致。 Provisioning Profile 把前面讲到的东西合起来:


App ID (app的唯一标识)


UDID (在某台设备上运行的唯一标识)


Certificate (开发者认证)


Provisioning Profile。


Provisioning Profile 通过xcode或者itunes导入到device中,或者打包到一个包含app和profile的.ipa文件中。你可以在iOS Provisioning Portal 中创建你的Provisioning Profile。


 新建一个,有一下几个步骤:profile命名,以后你会在xcode的organizer,Buid Settings 以及其它一些地方中看到 certificate,App ID,要如Info.plist中的一致。选择要应用到的设备。通常,我都是把我的设备全选的。


个人用途的签名 Signing


 假设你已经有一个准备测试的App,而你有IDP,并且处理好Provisioning Profile的事情了。


 现在你清楚已经知道它们的逻辑了,如果你新加入,下面这些是你要做的:


1 检查你的公钥私钥,为以后检查方便,起个好名吧。


2 用Keychain Access来创建你的开发认证。然后下载Apple给你的认证,双击安装,然后你可以在Keychain中看到了吧。


3 下载“Apple Worldwide Developer Relations Certification Authority Certificate”(WWDR)也是双击安装,也可以到Keychain中看到。


4 检查你项目的Bundle ID,到Provisioning Portal中创建一个一致的App ID。


5 在Provisioning Portal中加入你想要的UDID。(全部加上好了)


6 针对你的Certificate创建Provisioning Profile, 指定你的app ID 和UDID。


bb07d39e7a504f34a81011ad14385748.png


7 下载刚刚创建的Profile,拖到你的xcode Organizer中。


 然后,你就可以sign你的project,并让它们在你的device上运行了。


     在Target – Build Settings ,往下滚动到 Code Signing一节。


 试试编辑一下Debug schema,它适合于团队协作:


 在Automatic ProfileSelector中选择“iPhone Developer”,你会看到你的认证已经自动选上了。


 一切都搞定了,连接你的device,在xcode中选择Debug build,build & run。


xcode会到你的设备里装上这个provisioning profile,并运行你的App。

相关文章
|
6月前
|
iOS开发 开发者
【教程】苹果 iOS 证书制作教程
【教程】苹果 iOS 证书制作教程
|
6月前
|
移动开发 前端开发 数据安全/隐私保护
iOS发布证书.p12文件无密码解决办法及导出带密码的新.p12文件方法
iOS发布证书.p12文件无密码解决办法及导出带密码的新.p12文件方法
199 0
|
6月前
|
网络安全 iOS开发
【教程】制作 iOS 推送证书
【教程】制作 iOS 推送证书
77 0
|
11月前
|
iOS开发 开发者
📝 App备案与iOS云管理式证书 ,公钥及证书SHA-1指纹的获取方法
在iOS应用程序开发过程中,进行App备案并获取公钥及证书SHA-1指纹是至关重要的步骤。本文将介绍如何通过appuploader工具获取iOS云管理式证书 Distribution Managed 公钥及证书SHA-1指纹,帮助开发者更好地理解和应用该过程。
|
25天前
|
程序员 iOS开发 开发者
iOS|获取 Distribution Managed 证书的 SHA-1 指纹和公钥
APP 备案时,如何获取 iOS 平台 Distribution Managed 类型证书的证书的 SHA-1 指纹和公钥?
48 0
|
1月前
|
iOS开发 开发者 MacOS
在线创建ios打包证书无需mac
这个文件并不一定需要使用mac OS去创建,在苹果开发者中心,生成了cer格式的证书后,导出p12证书这个过程,其实也并不一定需要mac电脑来完成。
24 0
|
3月前
|
iOS开发
App备案与iOS云管理式证书 ,公钥及证书SHA-1指纹的获取方法
App备案与iOS云管理式证书 ,公钥及证书SHA-1指纹的获取方法
189 0
App备案与iOS云管理式证书 ,公钥及证书SHA-1指纹的获取方法
|
6月前
|
Android开发 iOS开发 开发者
App备案-iOS云管理式证书 Distribution Managed 公钥及证书SHA-1指纹的获取方法
App备案-iOS云管理式证书 Distribution Managed 公钥及证书SHA-1指纹的获取方法
411 0
|
5月前
|
iOS开发 开发者
ios证书申请最简单的教程
使用uniapp进行开发的时候,点击uniapp打包界面的教程,提示需要Mac电脑申请ios证书,但是手上没有mac电脑,几经周折,终于找到了不需要mac电脑生成ios证书的解决方案。今天将解决方案整理出来。
104 10
|
Android开发 iOS开发 开发者
App备案-iOS云管理式证书 Distribution Managed 公钥及证书SHA-1指纹的获取方法
,在appuploder直接复制IOS信息;如果还没有创建证书,请上传正确的P12苹果证书后,系统会自动解析出对应的签名和公钥信息; ——APP备案的原理是基于原有的工信部域名备案系统,如果已经有了域名备案,无需新增备案主体;只需要在之前的域名备案系统里面,新增APP信息,收集的APP信息主要包括APP包名和签名及公钥这3项;——APP备案是属于行政常规主体信息预存,和域名一样,自行决定是否备案。目前国内安卓应用商店是全面要求APP备案的,如果没有APP备案是不能通过审核发布到各大应用商店。——如看了教程,还不清楚怎么获取APP包名、安卓签名、苹果sha1签名、公钥等信息,请联系我们在线客服,