【jenkins】ios build failed:enterprise Certificate Signature invalid

1、问题现象

1.1、** EXPORT FAILED **

image2017-11-30%2013%3A49%3A7.png?versio

1.2、** ARCHIVE FAILED **

image2017-11-30%2013%3A50%3A44.png?versi


2、问题分析&定位

2.1、从Console log来看,应该是iOS证书问题导致build failed

2.2、进入官网,查看证书状态,发现证书状态为Invaild(也可使用工具查看:iPhone 配置实用工具.zip

image2018-5-16%2016%3A28%3A48.png?versio

2.3、编辑invaild证书,重新生成新的enterprise证书

image2018-5-16%2016%3A27%3A59.png?versio

3、问题解决步骤

3.1、xcode–accounts,账号拥有以下两个权限

image2017-11-30%2013%3A57%3A54.png?versi

3.2、登录账号,下载profiles

image2018-5-16%2016%3A26%3A56.png?versio

3.3、安装证书(p12)

3.4、安装完证书后,在钥匙串中查看已安装证书

从Apple Member Center网站下载证书到Mac上双击即可安装(当然也可在Xcode中添加开发账号自动同步证书和[生成]配置文件)。证书安装成功后,在KeychainAccess|Keys中展开创建CSR时生成的Key Pair中的私钥前面的箭头,可以查看到包含其对应公钥的证书(Your requested certificate will be the public half of the key pair.);在Keychain Access|Certificates中展开安装的证书(ios_development.cer)前面的箭头,可以看到其对应的私钥。

image2018-5-16%2016%3A30%3A49.png?versio

image2018-5-16%2016%3A32%3A27.png?versio

3.5、进入xcode,点击manage certificates,查看已安装的证书

image2018-5-16%2016%3A33%3A8.png?version

Certificate被配置到【Xcode Target|Build Settings|Code Signing|Code Signing Identity】下,下拉选择Identities from Profile "..."(一般先配置Provisioning Profile)。

Xcode中配置的Code Signing Identity(entitlements、certificate)必须与Provisioning Profile匹配,并且配置的Certificate必须在本机Keychain Access中存在对应Public/Private Key Pair,否则编译会报错。

image2018-5-16%2016%3A34%3A39.png?versio


4、证书配置常见错误

1.no such provisioning profile was found

Xcode Target|Genera|Identity Team下提示"Your build settings specify a provisioning profile with the UUID "xxx",howerver, no such provisioning profile was found."

Xcode Target|BuildSettings|Code Signing|当前配置的指定UDID的provisioning profile在本地不存在,此时需要更改Provisioning Profile。必要时手动去网站下载或重新生成Provisioning Profile或直接在Xcode中Fix issue予以解决(可能自动生成iOS Team ProvisioningProfile)!

2.No identities from profile

Build Settings|CodeSigning的Provisioning Profile中选择了本地安装的provisioning profile之后,Code Signing Identity中下拉提示No identities from profile “…”or No identities from keychain.

Xcode配置指定UDID的provisioning profile中的DeveloperCertificates在本地KeyChain中不存在(No identities are available)或不一致(KeyPair中的Private Key丢失),此时需去网站检查ProvisioningProfile中的App ID-Certificate-Device配置是否正确。如果是别人提供的共享账号(*.developerprofile)或共享证书(*.p12),请确保导出了对应Key Pair中的Private Key。必要时也直接在Xcode中Fix issue予以解决(可能自动生成iOS Team ProvisioningProfile)。

3.Code Signing Entitlements file do not match profile

"Invalid application-identifier Entitlement" or "Code Signing Entitlements file do not match those specified in your provisioning profile.(0xE8008016)."

(1)检查对应版本(Debug)指定的*.entitlements文件中的“Keychain Access Groups”键值是否与ProvisioningProfile中的Entitlements项相吻合(后者一般为前者的Prefix/Seed)。

(2)也可以将Build Settings|Code Signing的Provisioning Profile中对应版本(Debug)的Entitlements置空。

4.Xcode配置反应有时候不那么及时,可刷新、重置相关配置项开关(若有)或重启Xcode试试。


5、参考

iPhone真机调试应用程序》《iOS Developer:真机测试

iOS Development--Certificates, Provisioning Profiles

关于Certificate、Provisioning Profile、App ID的介绍及其关系

数字签名和数字证书》《iOS keyChain 研究

苹果开发者账号那些事儿》《iOS關於Provisioning Profiles這些事

iOS Code Signing 学习笔记》《代码签名探析/Inside Code Signing

iOS Code Signing: 解惑/iOS Code Signing: Under The Hood

iOS行货自动打包》《解决Xcode无法生成Archive的问题》《iOS发布遇到的一些问题

Xcode打包ipa包》《iOS程序生成ipa进行真机测试

优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/593560

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。