【问题标题】:Code Sign Error on Xcode 8 and iOS 10 Cordova ProjectXcode 8 和 iOS 10 Cordova 项目上的代码签名错误
【发布时间】:2017-01-22 21:13:30
【问题描述】:

我有一个 cordova 项目,我在我的 iPhone 和 android 设备上构建并在本地运行它。

但是在我升级到Xcode 8 和我的iPhone iOSiOS 10 之后,我无法在本地构建ipas。它失败并出现以下错误。

=== 构建目标 * OF PROJECT * WITH CONFIGURATION Debug ===

检查依赖关系 为“*”签名需要一个开发团队。 在项目编辑器中选择一个开发团队。 **SDK“iOS 10.0”中的产品类型“应用程序”需要代码签名

这在更新之前运行良好。更新后,iOS 的构建失败。

项目的相关版本号是

ios-deploy -V - 1.8.6
xcodebuild -version - Xcode 8.0 Build version 8A218a

我的Xcode 设置有适当的证书和配置文件。

【问题讨论】:

    标签: ios cordova certificate


    【解决方案1】:

    我们团队的自定义构建脚本运行 sudo cordova build ios

    对我有用的是重建项目而不使用sudo 根据需要修复权限错误。然后从我们的构建脚本中删除sudo,一切正常。

    ** 必须在第一次构建后在 xCode 中指定团队。

    【讨论】:

      【解决方案2】:

      如上所述,更新到 cordova ios 4.3.1 并指定 build.json 文件对我有用(可能 4.3.0 包含修复)

      更新您的平台:

      cordova 平台更新 ios

      【讨论】:

        【解决方案3】:

        升级 Xcode 8.2.1 和配套的 Xcode 命令行工具后出现类似问题。

        对我有用的解决方案:

        1) 打开 Xcode Preferences -> Accounts

        2) 删除现有帐户 (AppleID)

        3) 使用 AppleID 添加新帐户

        4) 选择打开右窗格显示的新帐户并单击“查看详细信息”。

        5) 根据需要生成新的签名身份,尤其是“iOS 开发”。点击“完成”。

        在我所有的 Cordova 应用程序都允许“cordova build ios”之后。

        【讨论】:

          【解决方案4】:

          这对我有用

           "ios": {
              "release": {
                "developmentTeam": "yourdevteamid",
                "packageType": "app-store",
                "provisioningProfile": "yourprovfileUUID"
              }
            }
          }
          

          如果我添加“codeSignIdentity”:“iPhone Development”,它不起作用,所以在 build.json 文件中删除 codeSignIdentity。我还必须将所有图标添加到 config.xml

           <icon src="res/ios/icon-60@3x.png" width="180" height="180" />
                  <!-- iOS 7.0+ -->
                  <!-- iPhone / iPod Touch  -->
                  <icon src="res/ios/icon-60.png" width="60" height="60" />
                  <icon src="res/ios/icon-60@2x.png" width="120" height="120" />
                  <!-- iPad -->
                  <icon src="res/ios/icon-76.png" width="76" height="76" />
                  <icon src="res/ios/icon-76@2x.png" width="152" height="152" />
                  <!-- Spotlight Icon -->
                  <icon src="res/ios/icon-40.png" width="40" height="40" />
                  <icon src="res/ios/icon-40@2x.png" width="80" height="80" />
                  <!-- iOS 6.1 -->
                  <!-- iPhone / iPod Touch -->
                  <icon src="res/ios/icon.png" width="57" height="57" />
                  <icon src="res/ios/icon@2x.png" width="114" height="114" />
                  <!-- iPad -->
                  <icon src="res/ios/icon-72.png" width="72" height="72" />
                  <icon src="res/ios/icon-72@2x.png" width="144" height="144" />
                  <!-- iPhone Spotlight and Settings Icon -->
                  <icon src="res/ios/icon-small.png" width="29" height="29" />
                  <icon src="res/ios/icon-small@2x.png" width="58" height="58" />
                  <!-- iPad Spotlight and Settings Icon -->
                  <icon src="res/ios/icon-50.png" width="50" height="50" />
                  <icon src="res/ios/icon-50@2x.png" width="100" height="100" />
                  <!-- iPad Pro -->
                  <icon src="res/ios/icon-83.5@2x.png" width="167" height="167" />
          

          【讨论】:

          • 尝试了几乎所有配置选项的排列,这是有效的。
          • 你把 build.json 放在哪里?
          【解决方案5】:

          我在 iOS 的 Apache Cordova 构建中使用 xCode 8 时遇到了同样的问题,尝试了所有我能找到的解决方案,但没有任何结果,唯一有效的是在构建中指定开发团队、包类型和配置文件。儿子文件是这样的:

          {
            "ios": {
              "release": {
                "developmentTeam": "yourdevteamid",
                "packageType": "app-store",
                "provisioningProfile": "yourprovfileUUID"
              }
            }
          }
          

          许多帖子建议指定“codeSignIdentity”:“iPhone Developer”,但这给出了另一个错误,只有这个配置对我有用(也许与开发证书的创建方式有关?),希望它对某人有所帮助。

          【讨论】:

          • 嘿,我想试试你的解决方案,但你在哪里可以找到配置文件 UID?
          • 在您的计算机上下载证书(扩展名为 .mobileprovision)并使用文本编辑器打开它,搜索 UUID
          【解决方案6】:

          您只需要在 Xcode 项目设置常规选项卡中启用“自动管理签名”选项,所有与签名相关的问题都将得到修复,看看我的这个答案:

          http://stackoverflow.com/questions/39568005/xcode-8-shows-error-that-provisioning-profile-doesnt-include-signing-certificat

          【讨论】:

          • 它有助于解决您的问题吗?
          【解决方案7】:

          正如 dpogue 所指出的,cordova 通过提交修复了这个问题

          92a62997adb3c8512328d5a0ae42fe5d156291f1

          位于其 iOS 平台存储库的主分支中。

          要从此修复中受益,您必须像这样安装最新的开发版本

          cordova platform remove ios && cordova platform add https://github.com/apache/cordova-ios.git
          

          并且您需要将build.json 文件添加到您的项目根目录中,如下所示

          {
            "ios": {
              "debug": {
                "developmentTeam": "YOURTEAMID"
              },
              "release": {
                "developmentTeam": "YOURTEAMID"
              }
            }
          }
          

          您可以在这里获取您的团队 ID:https://developer.apple.com/account/#/membership

          现在运行你的构建

          cordova run ios --device 
          

          ...或指定您的 build.json

          cordova run --buildConfig=build.json ios --device
          

          它应该可以工作!

          【讨论】:

          • 这需要添加到 Cordova 提交中。事实上,我正在添加它。
          • 但这意味着仍然启用了自动管理代码签名。如何通过 Cordova 禁用此框并单独指定证书?
          • 感谢您的帖子。我会试试这个,让你知道这是否适合我。苹果似乎已经更新了企业条款和条件。在我可以尝试之前等待它达成一致。
          • 这有很大帮助。我还必须调整最低构建版本,如果在 Cordova 中有额外的标志可以分配,那就太好了,但现在,我只是编辑了 project.pbxproj。
          • 谢谢,真的很有帮助。
          【解决方案8】:

          我写了我用来解决此问题的解决方法:
          https://dpogue.ca/articles/cordova-xcode8.html

          回顾一下,您需要指定您的开发团队 ID。在下一版本的 Cordova-iOS 中,您可以在 build.json 文件中使用 developerTeam 执行此操作。在此期间,我有 a hook 可用。

          您还需要将代码签名身份设置为“iPhone Developer”,即使是发布版本。在 build.json 中使用 codeSignIdentity 执行此操作。

          您不需要指定配置文件,Xcode 会在它有团队 ID 时自动处理。

          希望有帮助!

          【讨论】:

          • 感谢您的建议和链接。我跟着它,这次又遇到了一个不同的错误。我在 platforms/ios/cordova/build.xconfig 中提到了属于我的开发团队 ID,但它一直抛出找不到应用 ID 的错误。我现在已经回到 Xcode 7.3.1 ,至少它现在可以正确构建并安装它。只是不运行应用程序和记录内容,考虑到我主要通过 safari 进行调试,这对我来说很好。
          • 如果我没有 build.json 文件怎么办?
          • 你需要添加一个@kinoli
          • 我是 cordova 的新手,build.json 文件的正确位置是什么?谢谢
          • @DanielSanchez build.json 文件位于项目的根目录中,在 config.xml 旁边
          猜你喜欢
          • 2017-02-05
          • 2011-07-04
          • 2017-02-19
          • 2017-01-18
          • 1970-01-01
          • 2010-12-05
          • 2017-01-28
          • 2014-06-26
          • 1970-01-01
          相关资源
          最近更新 更多