`
cantellow
  • 浏览: 848303 次
  • 性别: Icon_minigender_1
  • 来自: 草帽海贼团
社区版块
存档分类
最新评论

关于code sign的简单理解

 
阅读更多

阅读人群:IOS开发新手

刚接触IOS开发,每次真机调试的时候或多或少都会遇到code sign的错误,更郁闷的是因为对code sign理解不透彻,导致提交app store的push notification没有生效,苹果的审核慢是出了名的,白白浪费了很多时间。

对此,苹果官方也有详细的解释:

http://developer.apple.com/library/ios/#documentation/ToolsLanguages/Conceptual/DevPortalGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40011159-CH1-SW1

不过我更喜欢提炼出干货,以更加简单的方式总结一下,希望对新人有益。

下面是 iOS Provisioning Portal的截图,几个概念必须要介绍一下:


1、Certificates是你的开发证书,这个是需要花99刀买的,表示你获得了苹果的开发授权,相当于开发者唯一标识。

2、Devices是用来管理你需要真机测试的设备,99刀附送的福利包括你可以添加100个设备来真机测试,就是说发布app store之前可以通过Development或者Ad Hoc方式来对你的app进行真机测试。设备就是指iPhone、ipod、ipad等,都是以UDID来进行唯一标识的。

3、APP IDs就是你要开发的app唯一标识,在这里你可以对app进行push notification和In-App Purchase等进行配置,可以下载配置后的push notification证书,通过java等服务来发送notification。

4、上面说的三种分表代表了三方面因素:唯一的开发者、唯一的设备、唯一的app,一般真机测试都需要将这三者关联起来(提交app store不用跟设备关联),这样才能表示唯一的开发者在唯一的设备上调试着唯一的app,那么用什么来关联呢,答案就是Provisioning,这个包含了前面这三种信息,看看新建provisioning发生了什么事情:



 让你输入开发者、app id和设备信息,这就表示一个Provisioning包含了这三种信息,配置好后,下载之后打开,默认安装在Windows——》organizer——》devices里。

 

真机调试的时候,需要在Targets——》Build Settiings——》Code Signing中对各种debug、release以及各种版本进行code sign配置,如果你是在开发阶段,你就需要选择通用的Provisioning(下面会介绍),或者你单独对这个app新建的Provisioning,如果是提交app store的时候,就需要新建下载并安装Distribution Provisioning,这个Provisioning包含你对app id的配置,我之前遇到的push notification不生效的问题就是因为我更新了app id(设置push notification enable),但没有在本机更新Distribution Provisioning,导致appstore审核通过之后push notification没有生效。

 

最后我要说一下iOS Team Provisioning Profile这个证书:



 
这是个证书自动生成的,属于团队开发管理的通用Provisioning,不针对唯一的APP ID,它是一个通用Development Provisioning,目的就是为了让你能调试任何app源代码,你可能从某些网上下载的代码运行的时候会遇到code sign问题,选择这个Provisioning就没有问题了。

当然不管什么Provisioning ,device都是受限制的,最多100个,不然app store就没有意义了。

  • 大小: 12.7 KB
  • 大小: 40.1 KB
  • 大小: 29.2 KB
1
2
分享到:
评论

相关推荐

    SimpleECDSA.tar_#C##code_

    标题"SimpleECDSA.tar_#C##code_"暗示这是一个关于C#实现的简单椭圆曲线数字签名算法(ECDSA)的代码压缩包。在信息技术领域,ECDSA是一种基于椭圆曲线密码学(ECC)的公钥加密算法,常用于数字签名,确保数据的完整...

    xcarchive 出不同证书IPA简单脚本

    通常,这个脚本会涉及到`xcodebuild`命令行工具,用于执行编译和打包任务,以及`codesign`工具,用于应用签名。开发者需要确保打包机器上已经安装了正确的证书,这些证书可能包括开发证书、adhoc证书或App Store发布...

    KYSharp.SM_code.rar

    在KYSharp.SM中,使用Sign()方法生成签名,使用Verify()方法验证签名。这个过程涉及到椭圆曲线上的数学运算,包括点的加法和乘法。 3. **SM4加密与解密**: SM4算法在C#中的实现相对简单,主要是对明文进行块加密...

    android google授权登录

    if (requestCode == RC_SIGN_IN) { Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data); try { // Google Sign-In was successful, authenticate with Firebase ...

    app 重新签名

    iReSign是一个开源工具,它简化了重新签名过程,允许开发者无需深入理解codesign命令行工具即可完成任务。以下是使用iReSign重新签名应用的一般步骤: 1. **获取必要的证书和描述文件**:你需要拥有有效的Apple...

    汇编课程设计简单计算器的制作

    - `sign` 变量用于存储运算符,如加号、减号、乘号和除号,它们是单字节的字符型数据。 2. **输入处理**: - 使用 `input` 子程序读取用户输入的数字和运算符。`a2c` 子程序将ASCII码转换为十进制数值,这是因为...

    oauth2简单demo

    首先,我们要理解OAuth2的核心概念: 1. **资源所有者(Resource Owner)**:通常是用户,拥有需要保护的资源。 2. **资源服务器(Resource Server)**:存储和提供受保护资源的服务。 3. **客户端(Client)**:...

    基于Quartus Ⅱ实现计算机组成原理(课程设计)【100012632】

    在“codesign”文件中,可能包含了整个课程设计的源代码、项目报告、逻辑仿真结果和其他相关资料。通过分析和学习这些文件,可以进一步巩固对计算机组成原理的理解,以及提升使用Quartus Ⅱ进行硬件设计的能力。这是...

    PHP接入支付宝单笔订单查询接口

    以下是一个简单的非SDK方式示例: ```php // 配置基础参数 $appid = 'your_app_id'; $privateKey = 'your_private_key'; // 商户私钥 $alipayPublicKey = 'alipay_public_key'; // 支付宝公钥 $gatewayUrl = '...

    java和.net代码实现SAP单点登录借鉴.pdf

    在IT领域,SAP系统是企业级业务流程管理和软件解决方案的领导者,而单点登录(Single Sign-On, SSO)是一种提高用户访问安全性与便利性的技术。本篇内容将详细探讨如何使用Java和.NET代码来实现SAP系统的单点登录...

    基于52单片机的正弦信号发生器

    本设计提供了一个简单而有效的正弦信号发生器实现方案,通过对频率、幅度等关键参数的灵活调整,可以满足不同应用场景的需求。通过理解上述核心知识点,开发者能够更好地掌握该系统的内部工作原理,并根据实际需求...

    source

    【标题】"source" 暗示我们关注的是与源代码相关的主题,可能是关于软件开发、编程语言或者特定工具的源代码分析。由于没有具体的描述,我们将基于标签 "源码" 和 "工具" 进行扩展。 【源码】在IT行业中,源码指的...

    java给手机发短信

    总结:Java发送短信主要涉及与第三方服务商的API交互,理解并正确使用SDK是关键。同时,为了提高系统的可用性和扩展性,可以封装成服务接口,提供给其他系统调用。记得在实际操作中,要考虑异常处理、日志记录以及...

    Python-快速上传ipa在线安装

    这可能涉及使用像`os`、`shutil`、`subprocess`等Python标准库,以及第三方库如`pyobjc`来交互与Apple的命令行工具(如`xcodebuild`和`codesign`)。 4. **HTTP服务器**:为了实现在线安装,需要一个可以托管IPA...

    网易云音乐可用的api

    它定义了不同软件组件之间如何交互,使得开发者能够轻松地实现特定功能,而无需理解底层实现细节。 **网易云音乐API功能** 1. **音乐搜索**:通过API,可以搜索歌曲、歌手、专辑等信息,返回的结果包含歌曲ID、...

    百度翻译API(C#)

    throw new Exception($"Translation failed with status code: {response.StatusCode}"); } } ``` 在这个方法中,我们计算了签名(sign),这是API调用的安全性要求。然后,我们构造了请求URL,包含所有必需的...

    PEiD-v0.95-20081103绿色免安装.rar

    PEiD-v0.95能检测到的签名包括微软的 Authenticode、CodeSign等,这对于评估程序的安全性和可信度至关重要。 使用PEiD-v0.95的过程简单高效。用户无需安装,只需解压"PEiD-v0.95-20081103绿色免安装"压缩包,运行主...

    py工具。旨在快速发布企业应用类似pgyer.zip

    2. **iOS应用打包**:了解IPA文件的结构,以及如何使用Xcode或命令行工具如xcodebuild、codesign进行打包和签名。 3. **企业级应用分发**:理解Apple的企业级开发者账号及其权限,以及如何设置和使用描述文件...

    RequireConfirmedEmail1

    在ASP.NET Core 2.2中,开发Web应用程序时,为了增强安全性,有时我们需要验证用户的电子邮件地址。"RequireConfirmedEmail1"这个项目演示了如何在应用...理解并实践这些知识点对于创建更安全的Web应用程序至关重要。

    如何在Choregraphe中调用百度翻译API

    在Choregraphe中调用百度翻译API是一项...这使得NAO或Pepper机器人能够理解和回应不同语言的用户,进一步拓展了它们的跨文化交流能力。在实际应用中,还可以根据需要添加错误处理和优化性能的代码,以提高用户体验。

Global site tag (gtag.js) - Google Analytics