将代码签名配置迁移到,app集团签定独立和分享

2019-08-17 10:08栏目:产品评测

ios公司签定也正是在苹果系统中安装软件时候必要评释的具名认证。未经任何签名的主次是不能够在智能手提式有线电话机上设置和平运动作的。全部HUAWEI应用程序在华为 OS设备上运维在此以前务必用官方的 signing identity 举行签订契约。

app公司签定应用独立签字可以吗

原著地址 Migrating Code Signing Configurations to Xcode 8

S60 第三版在安全性方面做了不小的精耕细作,对在系统中装置运转的第三方软件有越来越严厉的规定。某个关乎手提式有线电话机软硬件安全/个人新闻安全等地点的操作被做了非常的范围。

ios公司签署约等于在苹果系统中设置软件时候须要注明的具名认证。未经任何具名的次第是不可能在智能手提式有线电话机上安装和平运动转的。全数索尼爱立信应用程序在HTC OS设备上运维此前必须用合法的 signing identity 进行签订契约。

那是 iOS 开采和布置的代码具名软件的指南。这里包蕴的音信只怕带动更加好地领会代码具名的长河怎么样行事和完成,极度是为那个营造必须由八个苹果开辟者账号证书签署的应用程序和软件(举例:开采和厂家)以及怎样迁移您的幸存的签署配置到 Xcode 第88中学职业。

应用程序要促成这么些"被特意限制"了的意义就必须取得“签字”。约等于说要有人来为那么些操作的安全性负担!未经任何签名的程序不能够安装运营。

图片 1

<a name="table-content"></a>目录

  • 代码签字简要介绍
    • 取得签字证书
    • 签署证书
    • 具名二进制文件
    • Provisioning Profiles
    • 具名验证
    • 布局类型
    • 理解“Fix issue”
  • Xcode 7及在此以前的签名机制
    • 具名方法
      • 自动具名
      • 手动签字
    • 创设开拓版本
    • 创设分发版本
  • Xcode 8的签约机制
    • 具名方法
      • 机关具名
      • 手动具名
    • 营造开垦版本
    • 创设分发版本
  • 兼容Xcode 8 和 Xcode 7

图片 2

苹果市廛签名什么?苹果商城具名是苹果集团开辟者账号的一种尖端权限,增多了那些权力的app(也正是给app签字后),苹果就足以兑现没有须求上架到appsotre就足以下载app了,那如实给开垦者带来了大幅的平价。

<a name="intro-code-sign"></a> 代码签字简要介绍

要了解代码具名在漫天生态系统中所起的功能,您必须首先理解它的办事原理。本节介绍怎么样创设签名证书,以及代码具名在 iOS 生态系统中饰演的剧中人物。为此,我们将介绍签署应用程序进度中的各种步骤。

给东西具名表示能通过由已知的可相信管理机构的辨证。那对于苹果创立的 iOS 平台生态系统比较重大。在 iOS 设备上运维的装有软件必须由 Apple 相信的源举办签订契约。为了兑现这点,苹果集团通过苹果开垦职员陈设来承认相应的 iOS 开辟人士获得授权在 iOS 设备上安装和平运动作代码。一旦你是此安插的成员之一,您将必要需要签字证书,以便你能够对你的 iOS 软件拓展签订契约。

具名:便是在应用程序的特定字段写入一定的号子消息,表示该软件已经由此了签署者的核实。

独立证书:简单来讲就是,那一个集团开垦者账号只给协和用(如果未有商场账号可依靠第三方平台(如:ds.fubi.hk)获得苹果市肆签署服务,那也是三个不易的主意。),未有开放给人家用,给客户提供的苹果签字数量和内容都以由本人决定的,由此,苹果签名的数据和具名的app的材料都享有有限扶助,因而,证书会相对稳定性,不易于掉签,一般能保险3-七个月的岁月不掉签。

<a name="cert-sign-req"></a> 获取签字证书

要收获签字证书,您首先供给创造 CS奥迪Q3 文件(Certificate Signing Request)。要开创CS翼虎,您必须首先生成用于签署哀告的私钥。为此,您能够运作以下命令:

$ openssl genrsa -out MyPrivateSigningKey.key 2048

那条命令将生成一个新的私钥并将其写入 -out 参数钦定的不二等秘书籍的磁盘。参数 2048 告诉 openssl 使用2045个人长的模数来生成OdysseySA密钥对。那是在OS X上创立签名证书的行业内部措施。

若果私钥被成立,它将被用来签署 CS帕杰罗 文件。要生成新的 CSMurano文件,您供给运用以下命令:

$ openssl req -new 
        -key MyPrivateSigningKey.key 
        -out MyCertificateSigningRequest.csr 
        -subj "/emailAddress=[Your email address]/commonName=[Your Name]/countryName=[Your country code]"

必要在伸手中钦命八个字段:

  • 电子邮件地址
  • commonName
  • 江山的名字

这几个字段的剧情将用来向签订契约呼吁中添新币数据,以便你诉求的证件可标志为你的。所以,假诺自个儿要开创叁个新的CSLacrosse,命令将执行将如下所示:

$ openssl req -new 
        -key MyPrivateSigningKey.key 
        -out MyCSR.csr 
        -subj "/emailAddress=hello@pewpewthespells.com/commonName=Samantha Marshall/countryName=US"

那将创设三个 CS陆风X8,其中涵盖公钥和 -subj 钦点的新闻,然后数据将透过自己的私钥实行具名,以表达它最初来作者。在创建证书具名呼吁后,就能够转到 Apple Developer Portal 并交给它以哀告 Development 签字证书。

相似是经过各种证件来兑现的,操作简易 !

图片 3

<a name="sign-cert"></a>签字证书

证件颁发机构一旦获得到提交的 CSGL450 文件,它将使用 CSPAJERO文件中的消息成立证书。生成的评释由证书颁发机构(Apple)签发并宣布给开辟人士。开辟人士使用该证件来签署他们想要安装到 iOS 设备上的软件,而不必让 iOS 设备鲜明地领略各样独立的开拓职员。这是因为 iOS 设备接头(并相信)开拓人士的证书的昭示机构(Apple),因此, iOS 设备接头它能够信任由Apple签字的证件。

总结:

[1. 私钥] -----> [2. CSR] -----> [3. Apple Developer Certificate Authority]
                                                            |         ^
                                                            |         |
                                                            |         |
                                                            V         |
[5. Signed Application] <--- [4. Developer Identity Certificate]      |                                                                             |
     |                                                                |
     |                                                                |
     |                                                                |
     V                                                                |
[6. iOS Device] ------------------------------------------------------
  1. 开采人士的私钥用于签署 CS宝马X5 文件
  2. CSRubicon 文件包罗开荒者的新闻和公钥
  3. 苹果证书管理机构接收 CS本田CR-V 文件,并为开辟人士生成并签字身份ID明
  4. 开采人士接收居民身份证件,使用此证书及其私钥对应用程序进行签名
  5. 由身份ID明具名的软件被具名者信任。
  6. 设置在iOS设备上的软件的证书针对签署开垦人士证书的 CA 证书实行认证。验证的信任链:
    • 软件受开采者信任
    • 开荒人士被苹果信任
    • 配备信任苹果

据此,设备信任来自开采者的软件。

图片 4

分享证书:简单的说,那个市廛开拓者开辟给集镇上重重水道教协会同用,给客户提供的苹果具名数量和剧情都不只怕调控的,因此,苹果签名的数据和签名的app的品质都万般无奈确认保障,那用的账号轻巧被苹果封闭扼杀,因而,证书会非常不安定,很轻松掉签,一般八个礼拜左右就相当了。

<a name="sign-binary"></a>签名二进制文件

创设 iOS 软件的一局地需求是,您必须签署全体要安插到iOS设备的软件。那是出于操作系统强制试行的严苛的安全计策。 通过在可实施二进制文件上调用 codesign,Xcode 帮助我们将这一步整合到了营造应用程序的长河中。那将利用由 Apple 创造的地位证件相关联的私钥,生成二进制文件中代码内容的签字。然后将所生成的签字嵌入到可施行二进制文件中,以允许其被认证。那将保证应用程序中的代码不会被改换,除非嵌入式具名的辨证战败。由于 iOS 应用程序不止又可举行二进制文件组成,由此这种单纯嵌入式签字不足以确认保障全部应用程序的完整性。

在 OS X 上,应用程序被视为具备 .app 扩充名的文书。那被称为“包(bundle)”。包是含有结构化格式和内容布局的目录。通过给目录文件增加扩大名,允许它们被系统识别以被另一个顺序加载。当包有 .app 扩充名的时候,它会被系统先后 LaunchServices 加载。 Launch瑟维斯s 担任运维由别的软件可能用户点击运行的软件。由此,平时当您运维 Xcode 时,您能够在 Finder 中双击它,大概在 Dock 中式点心击它,大概供给 Spotlight 运营它。全体那几个都以基于具有 .app 扩张名的包。在 OS X 上,应用程序包听从以下结构:

  -o Foo.app                    |用户可见应用程序
    -o Contents                 |包含包的内容的目录
      -o Info.plist             |文件,其中包含有关软件包的信息
      -o PkgInfo                |创建包时生成的元数据文件
      -o MacOS                  |包含可执行二进制文件的目录
    |   -o Foo                  |可执行二进制
      -o Resources              |可用于应用程序的资源目录
    |   -o Foo.icns             |图标,显示为用户可见的应用程序
      -o Framework              |任何可执行文件使用的框架或动态库
        -o Sparkle.framework    | OS X 软件中的常见框架示例

这被称作“深层应用程序包(deep application bundle)”,因为任何都存款和储蓄在顶层 Foo.app 包目录中。

在 iOS 上,应用程序坚守稍微分歧的构造,被称作“浅应用程序包(shallow application bundles)”

  -o Foo.app                            |用户可见应用程序
    -o Info.plist                       |文件,其中包含有关软件包的信息
    -o Foo                              |可执行二进制
    -o Foo.icns                         |图标,显示为用户可见应用程序
    -o Framework                        |任何可执行文件使用的框架或动态库
      -o AFNetworking.framework         | iOS 软件中常见框架示例

正如您所见到的,不像 OS X 上的应用程序包这样有单独的目录,在 iOS 上运用更浅的办法来囤积应用程序使用的必备能源和数目。

为了确认保障可举办二进制文件以及运转时利用的数额和能源未被更换, 一个新目录将被增加到应用程序包中。这几个新目录名称叫 _CodeSignature,何况带有一个 CodeResources 文件。此文件是 plist 格式的,罗列出包中存有的公文,并为每一种文件提供哈希值。那么些哈希值用于验证包的开始和结果保持不改变。同期能源检查使得一些能源得以开始展览更新和删除,以免守应用程序使其和好的签订契约无效。

此进度允许开辟职员马上奉行塑造并签订契约,并保管他们安排分发的二进制文件与开始的一段时期营造的二进制文件一律。

苹果公司具名应用开辟须求本事,职业知识和经验,如果有想要发展成游戏的主张或概念,经验丰盛的开辟人士能够提供正规提出,app在各种行在那之中的功能都是小心的,举例在教育方面,通过开垦教育app来帮助其长进。

<a name="prov-prof"></a>Provisioning Profiles

除此之外运用证书验证应用的签名者的不追求虚名,还恐怕有一种附Gavin件用于证明应用被允许安装在一定设备。这种文件被喻为配置概要文件。Provisioning Profiles 是由 Apple 的 CA 加密具名的 plist 文件,以有限支撑其在开创后不可能被涂改。那使得苹果完全调节在 iOS 上选用的配置机制。

Provisioning Profiles 包罗用于启用应用程序的一些一定新闻:

  • 可用来对应用程序进行签字的注脚
  • 绑定 bundle identifier 与应用程序
  • 铺排方法(集团风格或基于设施UDID)
  • 团队标志符
  • 沙箱限制
  • 可安装的过期日期

装有那些属性用于分明设备是不是同意安装富含该 Provisioning Profiles 的应用程序。那限制了何人可以安装使用支付那注解具名的应用程序,而且其余被签字的应用程序的帐户能够被注解是从 Apple 开采人士门户创造的。

Provisioning Profiles 的目标是确定保证该种配置的设置是安枕无忧的,同不时间也差别目的在于其余时候更新该配置。在 Apple 开采人士门户中,您能够每一日编辑和重新生成描述文件。那样做不会使原先的陈述文件无效,它只会依照你修改的内容生成富有分裂内容的新的陈诉文件。

<a name="sign-vali"></a>签字验证

如前所述,iOS 操作系统限制全部可进行代码都不可能不采纳被 Apple 信任的证件颁发机构签署。这种限制在选择还从未设置在此之前就已经上马了。

当开荒 iOS 软件时,您将要你的Computer上构建和具名应用程序,然后 Xcode(或任何门路,借令你使用分化的IDE)将与经过 USB 连接的 iOS 设备通讯。它将与 iOS 设备实行身份验证握手,然后经过 USB 接口使用本地安全套接字开头与之通讯。在那时候,iOS设备被告知大家要设置软件包,并初阶将数据发送到设备。 iOS设备将选择此数量并在暂且沙箱境遇中重新创立应用程序。一旦应用程序已全然接受,操作系统将表明应用程序是还是不是已签订契约并且能够设置到此设施上。

一经分明应用程序来自可信赖任源,就能够针对 Provisioning Profiles 文件举办验证,以管教应用程序能够在此设施上设置和平运动行。各类 iOS 设备都有独一的标志符 UDID(Unique Device IDentifier)。该标志符由以下字符串的 SHA1 组成:

  • 序列号
  • ECID(也称之为UniqueChipID,那是各种设备独有的)
  • wifi 卡的 MAC 地址
  • Bluetooth卡的 MAC 地址

此标记符包涵足以独一标记具有 iOS 设备的音信。当在苹果开荒者门户网址上注册特定设备时,开辟人士须求动用该标记符。每种开拓者帐户只好登记的一定数量的装置。Provisioning Profiles 文件能够包含其余数据的标记符。那限制开辟人士只可以设置注册到其设备池的器具。如若设备的 UDID 与在描述文件中登记的别的标志符不相称,则该应用程序将不会设置,因为它未获批准。假如应用程序的具名和描述文件都因此认证步骤,则会为该应用程序创设二个的确的沙箱容器,以驻留在个中。iOS 系统会为将在安装的应用程序创设贰个新目录。从那里,它将能够访谈有限的文件系统和财富。

另外,任曾几何时候在 iOS 上运维应用程序,系统会实践额外的认证和代码签字验证步骤,以管教从安装时初阶,可施行代码未有被改造。负担那几个的经过称为 amfid,“Apple Mobile File Integrity Daemon” 的缩写。这是一种在后台运营的劳务,可确定保障系统上运转的具有内容都已经被允许在系统上运维。近期有贰个有关这些历程的质量难点,因为运行应用供给加载多数动态库。在iOS上运维任何代码的需要之一是具有可进行代码必须先表达为可相信,然后手艺经过动态链接器加载到内部存款和储蓄器中。那几个进度会导致系统上的瓶颈,具体能够看那一个 issue。所以苹果建议开辟人士限制应用程序使用的 dylib(动态链接库) 数量。

<a name="type-depl"></a>安插类型

有三种情势将应用程序安排到iOS设备,首倘若基于签字配置。

  • 开荒(Development) - 将应用程序安顿到你的装置
  • 分发(Distribution)- 将应用程序计划到别的人的设施

那八个布局很明朗指的是它们依据于用于执行应用程序签字的签字身份。

作为开采职员,要将应用程序安顿到您的某部 iOS 设备,您必须具有与由Apple的开辟人士证书颁发机构签订契约的身份ID件配成对的私钥。由该 CA 具名的地位评释将有权在点滴数量的一定设备上设置,然后将调试器连接到该应用以使用它实行支付。那是系统上针锋相对较高端别的权柄,由此,Apple对单个开垦人士帐户注册的装置数量有严苛的限量。

其次种配备是为着软件分发的指标。一旦应用程序已经完结开辟并预备好应用,它须要为散发进行签名。这种具名比付出安顿时的签订契约特别严酷,某种程度上与从 App Store 或公司路子得到的应用程序一致。提交到 App Store 的应用程序必须先选取分发身份ID件进行签订契约。那必要十分的 CS福睿斯并提交给苹果。可是,这一次它由不相同的 CA 签署,Apple Distribution Certificate Authority (苹果分销证书颁发机构)。其余,为个中采取营造的应用程序会使用 Enterprise Distribution (集团分发)居民身份注明签字。

<a name="unde-fix-issu"></a>理解“Fix issue”

为了扶持开拓职员解决代码签字配置的难点, Xcode 引进了五个新的对话框。那是为着支持开垦人士幸免麻烦的构建利用的布局进度。以下是粗略的全体步骤:

[1]<-----------
 |             |
 | --NO------>[0]
YES             ▲
 |              |
 V              |
[2]             |
 |             ▲
 | --NO--------|
YES             |
 |              |
 V              |
[3]             |
 |             ▲
 | --NO--------|
YES             |
 |              |
 V              |
[4]             ▲
 |             |
 | --NO-------/
YES
 |
 ------> Successful Build :)
  1. 鲜明哪些身份ID件可用
  2. 反省身份ID件是还是不是享有相应的私钥
  3. 规定怎么样描述文件可用
  4. 反省是不是有可用来在对象设备上安装的陈述文件,在那之中涵盖找到的签约标记和应用程序的软件包标志符

假使另外这一个的答案是或不是,那么你将最后转到步骤0的流程图,代表苹果开辟者门户。然后会见世“Fix issue”对话框,点击分明之后会创制八个新的 CS奥迪Q3文件,并若无评释的话会央浼一个新的表明,并自动创立一个新的叙说文件,将能够用于铺排该应用程序。这几个进度足够有用,它的劣点也很复杂。说实话,这种办法是相符不怎么领悟代码签字机制并且不领会怎么化解的开采人员。不过,Xcode 的这几个特点在活动代码具名配置的装置中起着那几个关键的功力。

专注:当频仍变动描述文件时,最佳使用支付描述文件进行具备调节和测验专门的学问,因为 Xcode 会在须求时再次生成那几个描述文件。一旦在支付意况中形成布局,您应该手动更新和另行生成分发描述文件以适应任何新的改变。

↑目录


现行反革命大家将探讨什么根据构建配置来陈设 Xcode 来具名应用程序,以及以前和之后的办事办法。对于这一有的,笔者将选取xcodebuild 和 xcconfig 文件作为小编大好多的例证,因为那也是本身正在使用的点子。首要针对为公司和 App Store 分发的应用程序,以及怎么样修改您现存的秘技以便在Xcode 8吉林中华南理工科业余大学学学程集团作。那还带有部分操作技术,举个例子如何安插具名用于七个 Xcode 版本的塑造。

本人将首先介绍有关处理 iOS 创设软件和签订契约身份管理的局地基本概要:

  1. 其他开辟人士都不应有访谈签字身份的私钥和用来分发的签订契约证书。
  2. 在 CI 服务器上营造用于分发的应用程序(App Store 或 Enterprise),并提供给急需的用户。
  3. 应在 xcconfig 文件中内定创设设置。这是为了防止万一对 Xcode 的过于编辑。
  4. CI 服务器能够访谈:
- Provisioning Profiles(描述文件) 我们自己托管我们自己的 Jenkins 实例,这使得管理构建的描述文件非常容易,因为我们可以直接访问文件系统以添加任何新的描述文件。如果您使用的是其他系统,则必须在 repo 中包含描述文件,或者使用其他方法确保它们可用于执行构建。
- 开发人员帐户 用于 Xcode 执行 Archive(存档)和导出 IPA 包操作,它可能需要访问开发帐户,以便它可以正确地签署以便上传。

这一个点是本指南的盈余部分就要写到的;以统一格局实行营造,同一时间限定对开采帐户的签名凭证的拜访。


<a name="sign-in-xcode7-prior"></a> Xcode 7及从前的签名机制

在Xcode 7及此前版本中,已有签约应用程序的不二诀窍,正是通过为 CODE_SIGN_IDENTITY 和 PROVISIONING_PROFILE 钦点值来实行创设。那七个值是用来分明应用程序中开创嵌入式具名的签署配置。

<a name="sign-method"></a>签名方法

CODE_SIGN_IDENTITYPROVISIONING_PROFILE 供给在营造时钦赐值,以便能够创设二个 iOS 应用程序。有二种办法能够行使:自动签字和手动具名配置。两个服从同样的中坚逻辑路线,但在施行中能够被用来分裂的目标。 Xcode 中代码签名背后的行事依照了那套准则:

  1. 规定已编写翻译应用程序的软件包标记符
  2. 规定布置应用程序的配备的 UDID
  3. 根据 PROVISIONING_PROFILE 的值鲜明应选取的铺排概要文件
  4. 依据描述文件中援助的证书确定应运用的签署身份,以及 CODE_SIGN_IDENTITY 的值

步骤1和2不会退步,因为它们是创设和布局应用程序到 iOS 设备的主导。步骤3和4大概会退步,退步的时候会现出“Fix issue”对话框。假使开垦职员具备具名身份,但贫乏支撑包中的标记符和对象 iOS 设备的描述文件,则步骤3将倒闭。 Xcode 将为你创立一个新的陈诉文件,援救现存的签订契约身份和目的设备并下载应用。若是开采职员未有有效的具名身份,则步骤4将倒闭。此时,Xcode 将实施全部须求的步骤为开荒职员创立新的签字身份,并与新的叙说文件一齐下载。那是为了节省开采人员在规定七个潜在难题中哪八个是确实的根本原因的劳动。

<a name="auto-sign"></a>自动签字

在Xcode 7和原先,有一种“automatic signing”的章程,利用“Fix issue”对话框的措施,来消除将应用程序陈设到器材用于支付指标的难点。要在你自身的签订契约配置中应用此行为,应钦命以下值:

CODE_SIGN_IDENTITY = iPhone Developer
PROVISIONING_PROFILE =

要知道,大家在这里做的设置是说,大家期望 Xcode 使用含有 One plus Developer 的签字身份来签署应用程序,况且不行使一定的陈诉文件。那代表一旦协会中的每一种开采职员都怀有有效的支付具名身份(居民身份申明和私钥),他们就足以安枕而卧地安排到另外设施,而不必顾忌破坏签字配置。如上所述,每当尝试陈设到某些开辟职员未有陈设描述文件的器械时,那将导致 Xcode 提醒“Fix issue”。那幸而,因为 Xcode 将下载该描述文件,您将能够布署到对象 iOS 设备。那可能会产生 Xcode 通过向营造设置中加多值来弄脏 .xcodeproj 文件。一旦 Xcode 下载了新成立的汇报文件,那么就足以高枕而卧地删除该值,因为当开辟人士再次实施创设时,Xcode 会自动找到该值。

对此唯有应用程序开垦公司的积极分子将动用的创设配置,这种行为是老大可取的。除了要求形成苹果开垦者陈设的积极分子之外,无需对音讯身份的渴求。那是管理任何规模的团伙的精粹选拔,因为它同意全部开辟职员处理和保安定和谐睦的装置签字身份和叙述文件,而不强制任哪个人维护包含种种人的证件和道具的叙说文件。

<a name="manu-sign"></a>手动具名

尽管如此活动签字是付出应用程序的不错选拔,但它在管理开辟或分发的一定需要时并不见效。所以那时必须利用手动具名配置。平时主要须求的是用来营造的一定描述文件。在这种情景下,您将必须如下配置构建设置:

CODE_SIGN_IDENTITY = iPhone Distribution
PROVISIONING_PROFILE = 2249294d-440a-427c-bbef-432326c6552b

那将报告创设系统运用全部标志符 2249294d-440a-427c-bbef-432326c6552b 的叙说文件陈设此应用程序,并用 HUAWEI 分发身份注解签字。那迫使 Xcode 使用那么些设置或在构建时回来错误,若是不可能满足须要。那是实践 App Store,Enterprise 或任何类型的 Ad-hoc 分发的美好配置,以幸免全体集体访谈私钥或不测覆盖其和好的散发签字证书。

<a name="build-for-develop"></a>营造开辟版本

当构建用于支付的软件时,您愿意在其他时刻都不会油可是生代码编译的长河因为一些原因被终止掉。如前所述,用于此类型塑造的一级配置是“automatic”具名方法。那收缩了爱护的压力,并裁减恐怕变动 Xcode 项目文件的只怕性。

您应该率先为你的支付构建创设四个新的创设配置。您可以选择Xcode 为此活动创设的共处“Debug”配置。别的,您应该创设一个新的 xcconfig 文件来包容要对此创设配置实行一定的装置。一旦你达成了这两件事,在 Xcode 项目编辑器中,你供给为应用程序的“Debug”配置钦点该 xcconfig 文件。

近来,转到 xcconfig 文件,并保障它有以下项目:

CODE_SIGN_IDENTITY = iPhone Developer
PROVISIONING_PROFILE =

那将告诉 Xcode 为大家化解描述文件难题。首要的是要细心,给 PROVISIONING_PROFILE 的空值就要 Xcode 创设设置编辑器中显得为值 automatic。同样可以选拔于 CODE_SIGN_IDENTITY 值,不是 iPhone Developer,而是值 automatic。那将报告 Xcode 使用知足描述文件须求的别的项指标签署身份以及该描述文件相称的 UDID 和软件包标志符。您应该专注,CODE_SIGN_IDENTITY 的 automatic 值与无选项显然分化。要知道那是何许做事的,塑造设置给出的值用作针对富有已知结果的过滤器。因而,CODE_SIGN_IDENTITY 的值能够由以下命令表示:

$ security find-identity -p codesigning -v | grep "$CODE_SIGN_IDENTITY"

因此,当 CODE_SIGN_IDENTITY 的值是 iPhone Developer 时,您将只行使与之同盟的标记,而当使用空字符串时,您将见到全部结果。

安装落成后,您将索要踏入 Xcode 中的 Scheme 编辑器,并为您能够进行的各个类型的创设相关的操作采取“Debug”创设配置。当实施那么些操作(Run,Test,Analyze,Profile, Archive)时,那么些选拔能够决定传递给创设系统的安装。那允许你成立与创设的方案一贯相关的具名配置。

<a name="build-for-distribute"></a>创设分发版本

布局为散发创设的应用程序大约与为付出创设应用程序所需的布署步骤同样。设置新的创设配置以及能够采用该配置施行营造的 scheme 方案。这里的区分是,不是使用PROVISIONING_PROFILE创设设置的 automatic 值:使用一定 provisioning profile 描述文件的标记符。

那会某些改换签字进度的表现,因为前天用来 app target 的包标记符必须与在钦赐的汇报文件中命名的标记符相对应。由此,Xcode 营造系统将担任在磁盘上一定与叙述文件中列出的具名身份之一相称的签名身份。假设未找到证书或私钥,则会向开垦职员发出错误,布告他们没辙对 app 相应的 target 进行签订契约以将其计划到对象 iOS 设备。

急需打开这一个改换,因为在营造和安顿应用程序以实行分发时,应运用一定的分发描述文件和相应的签订契约身份。最棒是在未有人方可修改的Computer上施行为散发创造的构建,比如持续集成服务器(CI)。那限制了对具名身份的探问,并同意以联合的秘诀试行全体创设。

安份守己原先为设置 scheme 所实行的等同步骤操作: 通过铺排该 scheme 为每个档案的次序的操作使用一样的创设配置。那允许该 scheme 的有所类型的营造爆发以同一格局具名和配置的二进制。

↑目录


<a name="sign-in-xcode8"></a>Xcode 8的具名机制

乘机 Xcode 8的引进,引进了新的处理 target 的签署配置的点子。那么些新措施与 Xcode 7及从前的版本中已确立的行事某个冲突。要是您的具名配置遵守上一节中汇报的情势,那么你大概早已知晓在 Xcode 8 中某些格局已经不复适用了。

Xcode 第88中学,还恐怕有三个新的创设设置,用于援救管理新的签名方法:DEVELOPMENT_TEAMPROVISIONING_PROFILE_SPECIFIER

  • DEVELOPMENT_TEAM 该装置用于越来越好地操纵签署二进制文件时采纳的签字身份(越发是对此属于三个团队的职员)。
  • PROVISIONING_PROFILE_SPECIFIER 该装置用于提醒应该用于给定 target 的签字方法的体系。要运用代码签字的手动方法的 target 不会选拔此设置,而是将利用已弃用的 PROVISIONING_PROFILE 营造设置。即便设置了该值,则新的自动代码签字格局将接管。

<a name="sign-method-xcode8"></a>签字方法

Xcode 8引进了一种名称叫“automatic signing”的新措施。那是代表现成的管制签订契约身份的机关方法。这些改换恐怕会由于“manual”和“automatic”具名方法的分开荒生一些转移,进而在一开端导致有的小标题。作者刚强建议各种人奋勇一马当先搬迁到新的自发性具名方法,因为它收缩了签名身份和新闻保管中的潜在横祸。

<a name="auto-sign-xcode8"></a>自动签字

那是100%机动,并提示关闭 DEVELOPMENT_TEAMCODE_SIGN_IDENTITY 版本设置的值。这种方法或然和您在此以前知道为“Automatic”的签字配置有局地根本的分化。

  • DEVELOPMENT_TEAM不能够不安装为使得的开荒组织标志符。不能够为空,那将很好地化解使用磁盘上别的组织的签字身份的难题。当您的开支公司的具备成员不属于由 Apple Developer Account 定义的一样“开垦团队”时,那不行主要。这种意况平日出现在与承包商或小集团同盟时,开拓人士恐怕采取自身的开垦人士帐户实际不是市肆帐户进行普通支付。为了防止再度编辑 Xcode 项目文件或 xcconfig 文件,集团应当将有着开垦人士增加到他们的帐户,以便访谈同三个支出团队。 (注意:那并不供给全数开荒职员都足以访谈用于签署非开采版本的私钥)。
  • CODE_SIGN_IDENTITY 的值应该是通用的,举个例子“OPPODeveloper”(未有称谓说明符,防止御与任何共青团和少先队成员争辩)。
  • 对此要营造和布局到 iOS 设备的应用程序 target,无需安装 PROVISIONING_PROFILEPROVISIONING_PROFILE_SPECIFIER

启用自动签名时,会有一部分元数据值写入 xcodeproj 文件,那些值钦命每一种target 应该显示怎么开辟组织的 team id 正在被应用。非直观地,这一个值不是用作各类 target 的构建设置的一部分,而是作为在 xcodeproj 包内的 pbproj 文件中的 PBXProject 根对象上定义的TargetAttributes 字典的一有的。除了团队标志符(team id),TargetAttributes 中也设置了另二个键值对,此键值对向 Xcode(在协理它的版本中)提醒 Xcode 指标编辑器的 UI 应反映给定 target 正在选取电动签字格局。那么些值在须求时由 Xcode 自动更新,依据本人的经历,这不会形成xcodeproj 文件中的混乱,因为开采职员未有改观那些设置。

<a name="manu-sign-xcode8"></a>手动签字

新的手动形式管理签订契约配置是的确的100%手动。使用此措施时,必须钦赐 CODE_SIGN_IDENTITYPROVISIONING_PROFILE 创设设置的值。纵然那听上去好像于Xcode 7的并存措施,但在此间有一对第一的界别。

  • 后天能够通过名称并不是创建时提供的UUID钦定 Provisioning profiles 描述文件。那使得更易于追踪哪个描述文件正在被利用,并同意成立和采取具备相同名称的新描述文件,而没有要求立异任何现存配置或项目文件。
  • 经过“Fix Issue”功效自动创立的陈诉文件不能够在手动签字配置中接纳。 (假如您愿意不用告诉 Xcode 匹配 Xcode 自个儿用来生成新的陈述文件的名目情势)。
  • PROVISIONING_PROFILE 营造设置的“Automatic”设置不再灵光。要让 Xcode 自动消除采纳要用于安插的叙述文件,您必须采纳机关签字方法。

为了详细解说使用手动签字的一个私人商品房的难题,以及为什么应该迁移到利用机动具名方法:手动配置意味着一切都以手动的,那包蕴描述文件创建。由于 Xcode 自动创设的描述文件在此格局下不起功能,因而有权访问 Apple Developer Account 的社团者或代理级其余人手必须登入并将配备的 UDID 增加到 Developer Portal。之后,必须创设一个新的 Provisioning profiles 描述文件,它同目的在于具备注册的道具上运维应用程序,并满含增加到该帐户的开辟职员门户的保有团队成员的签字身份。当增添新的团伙成员和新的付出/测量检验设施时,将须要不断地维护此描述文件和道具列表以便及时更新。

保安这么的叙说文件将急需五个专职专门的职业的人,依照你的集体的大小将急迅耗尽增多新设备的力量(增加的设备数量是少数的)。轻松的话,在个别有些例外境况下,借使得以幸免,未有理由三番五次选用手动格局实行签字,因为这将是别的二个开拓职员的皇皇担任。管理那样的陈诉文件基本上与支出职业非亲非故,并且应该仅用于已部分遗留营造配置。

<a name="build-for-develop-xcode8"></a>营造开辟版本

本节将探究在采用新的自发性具名方法的状态下布署 Xcode 项指标不二诀窍。这种措施被小编用来自个儿维护的有着项目,而且是自身推荐的当作开辟人员应该采纳的法子。

而是,假如你使用手动签字方法,那么你的营造应该早已被科学的安顿,并且职业起来应当没不不奇怪。借令你要搬迁到新的机关签字方法,那么您应该阅读本博客的其他部分。

与原先配置代码具名的主意一致,设置支出构建将从营造配置和 scheme 初叶。要力保开垦构建已开立,您应该将 scheme 的操作(运营,测验,剖析,Profile 和归档)配置为具备指向安顿用于开垦的一致创设配置。除了这些之外,CODE_SIGN_IDENTITY 要设置为“魅族Developer”。那说不定看起来不直观,却是应该使用的没有错方法,以管教未有人会奇异地修改 scheme 的料想设置。那相对于从前的为每一个营造配置分配签字身份的措施有几个好处:

  • 负有开荒职员能够在具备将转移的格局下创设应用程序,但不可能散发它。当试图调节和测验代码中的崩溃或战败情状时,那是丰裕有效的。
  • 更麻烦遮掩或打破所陈设的所需签署身份。

除开此退换之外,您还亟需将 DEVELOPMENT_TEAM 设置为您的团组织有着的标记符。倘令你不清楚那是哪些,您能够接纳你的 Apple 开采职员帐户的 Apple ID 登陆开采者门户并在“Membership”部分查看。

再有,设置自动配置要求在 Xcode 指标编辑器的“General”选项卡的“Signing”部分中选中以启用。

<a name="build-for-distribute-xcode8"></a>创设分发版本

为了在 Xcode 第88中学使用新的电动签名方法来成立要分发的应用程序的营造,您必须运用“Archive” scheme 操作。在 scheme 编辑器中内定创设配置,並且该营造配置的 CODE_SIGN_IDENTITY 值为 “黑莓 Developer”, 然后“Archive”操作才将运用用于分发的签字身份和陈说文件。由此,不必施行常规的“Build”操作,您要求调用“Archive”操作。那将展开三个营造并在完结之后张开Xcode Organizer 窗口,当中列出了 Xcode 创造的享有“.xcarchive”档案。要在 CI 服务器上施行同一的经过,您必须调用三个 xcodebuild 命令:

$ xcodebuild archive 
             -workspace MyApp.xcworkspace 
             -scheme MyApp-Enterprise 
             -configuration Enterprise 
             -derivedDataPath ./build 
             -archivePath ./build/Products/MyApp.xcarchive

$ xcodebuild -exportArchive 
             -archivePath ./build/Products/MyApp.xcarchive 
             -exportOptionsPlist ./export/exportOptions-Enterprise.plist 
             -exportPath ./build/Products/IPA

那几个命令将试行以下操作:

  1. 创建 xcarchive 文件
    1. 安装进行的操作 “Archive”。
    2. 内定要在内部办事的 Xcode 文件,那必须是不易的 scheme。尽管未钦点 -workspace 标记,则 xcodebuild 将暗中认可尝试选拔 xcodeproj 文件来深入分析 scheme,即便 scheme 自个儿作为 xcworkspace 文件的一片段存款和储蓄。那或许引致创设退步,不能够构建 scheme 定义的隐式依赖关系。
    3. 点名要动用的构建配置。那是重中之重的,以便利用分配给它的没有错配置来营造该 scheme。当从命令行调用 xcodebuild 时,若无一点名使用哪个营造配置,Xcode 私下认可使用 Release 配置。
    4. 内定创设地点,对于我们的营造,大家要将它们放置在固定的营造目录中,以便 CI 服务器知道在哪里寻觅营造的输出。
    5. 点名用于创设 xcarchive 包的文书路线。
  2. 创建 ipa 文件
    1. 告知 xcodebuild,大家不是在营造贰个 target,而是在导出贰个共处的 xcarchive。
    2. 钦点 xcarchive 软件包的门路。那是由 xcodebuild 的上一遍调用转换的 xcarchive 文件包。
    3. 点名生成 ipa 文件时应使用的值。那些值存款和储蓄在磁盘上的多个 plist 文件中, 该 plist 文件已经填充了装有的新闻。下边会列出了一个示范, 解释了该 plist 的键值对以及它们的意义。
    4. 点名要将 ipa 文件导出到的目录。那将生出可用来分发的安装包。

瞩目:此进程与为 Enterprise 或 App Store 成立分发版本毫无二致。 exportOptions.plist 中的“method”键将具有值“app-store”实际不是“enterprise”(假使是 App Store 分发版本的话)。其余,您的 Enterprise 团队标记符恐怕开辟组织标记符也将被用于“teamID”键。

exportOptions.plist 示例:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>compileBitcode</key>
    <false/>
    <key>method</key>
    <string>enterprise</string>
    <key>teamID</key>
    <string>G00DC0NF1G</string>
    <key>uploadBitcode</key>
    <true/>
    <key>uploadSymbols</key>
    <true/>
    <key>manifest</key>
    <dict>
        <key>appURL</key>
        <string>foo.bar/app</string>
        <key>displayImageURL</key>
        <string>foo.bar/display-image</string>
        <ke>fullSizeImageURL</key>
        <string>foo.bar/full-sized-image</string>
    </dict>
</dict>
</plist>

-exportOptionsPlist 的文档 (译者注:可用使用 xcodebuild --help 查看):

compileBitcode : Bool

    For non-App Store exports, should Xcode re-compile the app from bitcode? Defaults to YES.

embedOnDemandResourcesAssetPacksInBundle : Bool

    For non-App Store exports, if the app uses On Demand Resources and this is YES, asset packs 
    are embedded in the app bundle so that the app can be tested without a server to host asset 
    packs. Defaults to YES unless "onDemandResourcesAssetPacksBaseURL" is specified.

iCloudContainerEnvironment

    For non-App Store exports, if the app is using CloudKit, this configures the 
    "com.apple.developer.icloud-container-environment" entitlement. 
    Available options: 
        * Development 
        * Production
    Defaults to Development.

manifest : Dictionary

    For non-App Store exports, users can download your app over the web by opening your 
    distribution manifest file in a web browser. To generate a distribution manifest, the 
    value of this key should be a dictionary with three sub-keys: 
        * appURL
        * displayImageURL
        * fullSizeImageURL
    The additional sub-key "assetPackManifestURL" is required when using on demand resources.

method : String

    Describes how Xcode should export the archive. Available options: 
        * app-store
        * ad-hoc
        * package
        * enterprise
        * development
        * developer-id
    The list of options varies based on the type of archive. Defaults to development.

onDemandResourcesAssetPacksBaseURL : String

    For non-App Store exports, if the app uses "On Demand Resources" and 
    "embedOnDemandResourcesAssetPacksInBundle" isn't YES, this should be a base 
    URL specifying where asset packs are going to be hosted. This configures the 
    app to download asset packs from the specified URL.

teamID : String

    The Developer Portal team to use for this export. Defaults to the team used to build the archive.

thinning : String

    For non-App Store exports, should Xcode thin the package for one or more device variants? 
    Available options: 
        * none (Xcode produces a non-thinned universal app)
        * thin-for-all-variants (Xcode produces a universal app and all available thinned variants)
        * (a model identifier for a specific device (e.g. "iPhone7,1"))
    Defaults to <none>.

uploadBitcode : Bool

    For App Store exports, should the package include bitcode? Defaults to YES.

uploadSymbols : Bool

    For App Store exports, should the package include symbols? Defaults to YES.

↑目录


<a name="work-in-both-worlds"></a>兼容Xcode 8 和 Xcode 7

包容Xcode 8 和 Xcode 7是或然的,这样当时机正确的时候开拓人士和 CI 服务器能够创新到 Xcode 8。为此,大家将应用 xcconfig 文件来安装如此做的安顿,因为在 Xcode 指标编辑器中安装是相当不需要的,况兼会促成混乱。

率先,我们想要知道如何是能够转移签字配置的变量:

  • Build Configuration,这将由 CONFIGURATION 值确定。
  • Target 类型,这将由 WRAPPER_EXTENSION 值分明。 (应用程序的 target 将此设置为 app
  • Xcode 版本,那能够通过有些由 Xcode 设置的构建配置来分明。大家将使用 XCODE_VERSION_MAJOR

进而,大家将创立三个变量,那多少个变量可以分解那八个设置将有所的分化的值:

CONFIGURATION_AND_VERSION = $(CONFIGURATION)_$(XCODE_VERSION_MAJOR)
WRAPPER_EXTENSION_AND_CONFIGURATION_AND_VERSION = $(WRAPPER_EXTENSION)_$(CONFIGURATION_AND_VERSION)

透过在 xcconfig 文件中定义那七个变量,大家得以接纳 xcconfig 文件中的变量替换行为来更换其余营造设置的原则分配,以修改 Xcode 将要创设中央银行使的下列多少个签名配置:

  • CODE_SIGN_IDENTITY
  • PROVISIONING_PROFILE
  • DEVELOPMENT_TEAM

CODE_SIGN_IDENTITY

将应用分裂属性的率先个变量是 CODE_SIGN_IDENTITY。在Xcode 7及在此以前的签署机制 节描述的布局风格中,此创设设置的值因使用的创设配置而异。这种表将来 Xcode 第88中学退换了,所以大家须要运用三个只在 Xcode 的显要版本之间不等的变量,XCODE_VERSION_MAJOR

CODE_SIGN_IDENTITY = $(CODE_SIGN_IDENTITY_$(CONFIGURATION_AND_VERSION))

这一行说,在构建时,分配给 CODE_SIGN_IDENTITY 的值将基于另叁个基于创设配置和 Xcode 版本的值构造的变量。通过这样做,您可以自定义它的各类变体:

CODE_SIGN_IDENTITY_Debug_0700 = iPhone Developer
CODE_SIGN_IDENTITY_Enterprise_0700 = iPhone Distribution
CODE_SIGN_IDENTITY_Production_0700 = iPhone Distribution

CODE_SIGN_IDENTITY_Debug_0800 = iPhone Developer
CODE_SIGN_IDENTITY_Enterprise_0800 = iPhone Developer
CODE_SIGN_IDENTITY_Production_0800 = iPhone Developer

在这种气象下,大家配备变量,使得与设计用来在 Xcode 7中创设的行为保持长久以来,同有的时候间更新值以与 Xcode 第88中学的期望状态相对应。实行中如下:

CODE_SIGN_IDENTITY = $(CODE_SIGN_IDENTITY_$(CONFIGURATION_AND_VERSION))

// To resolve the value of CODE_SIGN_IDENTITY we must first resolve CONFIGURATION_AND_VERSION
CONFIGURATION_AND_VERSION = $(CONFIGURATION)_$(XCODE_VERSION_MAJOR)

// So, therefore...
CODE_SIGN_IDENTITY = $(CODE_SIGN_IDENTITY_$(CONFIGURATION)_$(XCODE_VERSION_MAJOR))

// Now that that variable has been resolved, we need to resolve CONFIGURATION and XCODE_VERSION_MAJOR
XCODE_VERSION_MAJOR = // This is defined by Xcode, it will be 0700 in Xcode 7 and 0800 in Xcode 8
CONFIGURATION = // This is defined by the Xcode build system, it is the string name of the build configuration being used

// Therefore, when we are building a Debug build in Xcode 8, it will resolve as such:
CODE_SIGN_IDENTITY = $(CODE_SIGN_IDENTITY_Debug_0800)

// which means we have to look up the value of CODE_SIGN_IDENTITY_Debug_0800
CODE_SIGN_IDENTITY_Debug_0800 = iPhone Developer

// which means the original assignment of CODE_SIGN_IDENTITY resolves as
CODE_SIGN_IDENTITY = iPhone Developer

这种根据蒙受规范在运行时深入分析构建设置的值的主意是 Xcode 创设系统自己用于许多少厚度广营造设置的惯用形式。那是一个保证的类别,以便将全方位开垦团队调换成新本子的 Xcode。

PROVISIONING_PROFILE

能够应用类似的点子来分配应当选拔的陈说文件(provisioning profile)的值。但是,此次我们在实施赋值时索要更为小心。由于描述文件仅在布置可进行二进制文件并不是别的可实施代码时利用,由此大家不可能不将陈说文件的分红范围为仅应用程序 target。那足以由此为每一种 target 创立五个 xcconfig 并使用不一样的 xcconfig 文件来促成,不过大家更便于管理单个音讯集并非五个音讯集。

PROVISIONING_PROFILE = $(PROVISIONING_PROFILE_$(WRAPPER_EXTENSION_AND_CONFIGURATION_AND_VERSION))

设置 PROVISIONING_PROFILE 的值取决于以下营造设置的值:

  1. WRAPPER_EXTENSION
  2. CONFIGURATION
  3. XCODE_VERSION_MAJOR

基于 Xcode 7及在此以前的签名机制 描述的格局,唯有三种景况会在营造中运用一定的汇报文件:

  • 在 Xcode 7中创设集团分发的应用程序
  • 在 Xcode 7中营造用于生产(App Store)分发的应用程序

大家将安装 PROVISIONING_PROFILE 值来一次性管理那三种境况,同一时候在有着其余情形下设置为“Automatic”。那代表在 Xcode 第88中学自动具名还是能够像 Xcode 7中平等健康干活。

PROVISIONING_PROFILE = $(PROVISIONING_PROFILE_$(WRAPPER_EXTENSION_AND_CONFIGURATION_AND_VERSION))

// First, expand the variable WRAPPER_EXTENSION_AND_CONFIGURATION_AND_VERSION
WRAPPER_EXTENSION_AND_CONFIGURATION_AND_VERSION = $(WRAPPER_EXTENSION)_$(CONFIGURATION_AND_VERSION)

// Therefore...
PROVISIONING_PROFILE = $(PROVISIONING_PROFILE_$(WRAPPER_EXTENSION)_$(CONFIGURATION_AND_VERSION))

// Now do the same for CONFIGURATION_AND_VERSION
CONFIGURATION_AND_VERSION = $(CONFIGURATION)_$(XCODE_VERSION_MAJOR)

// Therefore...
PROVISIONING_PROFILE = $(PROVISIONING_PROFILE_$(WRAPPER_EXTENSION)_$(CONFIGURATION)_$(XCODE_VERSION_MAJOR))

// Now we know we are looking for variables with follow the pattern:
// PROVISIONING_PROFILE_$(WRAPPER_EXTENSION)_$(CONFIGURATION)_$(XCODE_VERSION_MAJOR)

// Based on the criteria already defined as needing the two provisioning profiles defined for Xcode 7:
PROVISIONING_PROFILE_app_Enterprise_0700 = 0be1f9f5-2c59-4a11-b118-2e9d046e5026
PROVISIONING_PROFILE_app_Production_0700 = 21510e33-dbe3-4209-9506-e907b5c87742

当此变量在塑造中增加时,对于无法为那四个值分析值的另外创设,大家将为 PROVISIONING_PROFILE 创设设置分配贰个空值。这将变成它在营造时自动消除,那是 Xcode 第88中学全数品种创设和 Xcode 7中 Debug 创设配置的预料行为。

DEVELOPMENT_TEAM

如前所述,DEVELOPMENT_TEAM 创设设置是 Xcode 8新引入的:那象征它不要求有标准地为每一个版本的 Xcode 设置,因为只有Xcode 8将运用它。分配给此创设设置的值将要于你的具体意况。借使您只是为一个开销协会创设,那么你能够直接分配此值,如下所示:

DEVELOPMENT_TEAM = H3LL0W0RLD

然则,倘使您正在与五个开拓公司(比如开拓账号和厂商账号)协作,那么您只怕需求利用 CONFIGURATION ,以有准绳地依照创设配置更换它:

DEVELOPMENT_TEAM_Debug = H3LL0W0RLD
DEVELOPMENT_TEAM_Enterprise = G00DC0NF1G
DEVELOPMENT_TEAM_Production = H3LL0W0RLD

那致使能够对 Xcode 创设系统举行分析,以便基张永琛在采用的营造配置利用不一样团体的具名身份。那将应用上边包车型地铁赋值格局:

DEVELOPMENT_TEAM = $(DEVELOPMENT_TEAM_$(CONFIGURATION))

此塑造设置的值很首要, 因为在 Building, Deploying, 和 Archiving 时 Xcode 8会用到。

PROVISIONING_PROFILE_SPECIFIER

签署系统的末段一个零部件是新的 PROVISIONING_PROFILE_SPECIFIER 创设设置。对于大家,它不需求设置为别的事物,因为电动签字将接管并为大家设置。那意味你能够在 xcconfig 文件中定义它,以幸免无意中期维修改该值:

 `PROVISIONING_PROFILE_SPECIFIER` =

总结

转换的 xcconfig 文件应如下所示:

CONFIGURATION_AND_VERSION = $(CONFIGURATION)_$(XCODE_VERSION_MAJOR)
WRAPPER_EXTENSION_AND_CONFIGURATION_AND_VERSION = $(WRAPPER_EXTENSION)_$(CONFIGURATION_AND_VERSION)

CODE_SIGN_IDENTITY_Debug_0700 = iPhone Developer
CODE_SIGN_IDENTITY_Enterprise_0700 = iPhone Distribution
CODE_SIGN_IDENTITY_Production_0700 = iPhone Distribution
CODE_SIGN_IDENTITY_Debug_0800 = iPhone Developer
CODE_SIGN_IDENTITY_Enterprise_0800 = iPhone Developer
CODE_SIGN_IDENTITY_Production_0800 = iPhone Developer
CODE_SIGN_IDENTITY = $(CODE_SIGN_IDENTITY_$(CONFIGURATION_AND_VERSION))

PROVISIONING_PROFILE_app_Enterprise_0700 = 0be1f9f5-2c59-4a11-b118-2e9d046e5026
PROVISIONING_PROFILE_app_Production_0700 = 21510e33-dbe3-4209-9506-e907b5c87742
PROVISIONING_PROFILE = $(PROVISIONING_PROFILE_$(WRAPPER_EXTENSION_AND_CONFIGURATION_AND_VERSION))

DEVELOPMENT_TEAM_Debug = H3LL0W0RLD
DEVELOPMENT_TEAM_Enterprise = G00DC0NF1G
DEVELOPMENT_TEAM_Production = H3LL0W0RLD
DEVELOPMENT_TEAM = $(DEVELOPMENT_TEAM_$(CONFIGURATION))

PROVISIONING_PROFILE_SPECIFIER =

那个布局文件能够同期兼容 Xcode 7和8,并且又能利用每种不一致的签订契约系统的优势。有关怎么着布置 xcconfig 文件的越来越多详细音信,请查看本指南。

↑目录


版权声明:本文由www.88807.com发布于产品评测,转载请注明出处:将代码签名配置迁移到,app集团签定独立和分享