Xcode 8和iOS 10 Cordova项目上的代码签名错误

32

我有一个 Cordova 项目,我在本地构建并在 iPhone 和 Android 设备上部署。

然而,在我将 Xcode 升级到 Xcode 8 并将我的 iPhone 升级到 iOS 10 后,我无法在本地构建 ipas。它会出现以下错误:

=== BUILD TARGET * OF PROJECT * WITH CONFIGURATION Debug ===

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

更新之前这个工作非常完美。更新后,iOS 的构建失败了。

该项目的相关版本号为:

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

我已经配置好我的Xcode,包括合适的证书和配置文件。

8个回答

51

正如dpogue指出的那样,cordova通过提交92a62997adb3c8512328d5a0ae42fe5d156291f1解决了这个问题,这个提交已经在他们的iOS平台存储库的主干分支上。

为了从这个修复中受益,您需要像这样安装最新的dev版本:

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

然后它应该可以工作!


4
这个内容需要添加到Cordova的提交中。实际上,我正在添加它。 - HipsterZipster
3
这意味着仍然启用了自动管理代码签名。我该如何通过Cordova禁用此选项并单独指定证书? - Georg Heiler
1
谢谢您的帖子。我会尝试这个方法并告诉您它是否适用于我。苹果似乎已经更新了企业条款和条件。在我同意之前,我将等待它被同意才能尝试这个方法。 - Vijay
1
谢谢,非常有帮助。 - Akram
1
老兄,非常感谢!我已经在想如果没有Xcode,我将无法进行签名的iOS构建。非常感谢! - José Damião
显示剩余9条评论

9
我写了一个解决方法:
https://dpogue.ca/articles/cordova-xcode8.html

简而言之,您需要指定您的开发团队ID。在下一个 Cordova-iOS 版本中,您可以在 build.json 文件中使用 developerTeam 来完成此操作。同时,我有一个钩子可供使用。
您还需要将您的代码签名标识设置为“iPhone Developer”,即使是发布版也要这样做。在您的 build.json 中使用 codeSignIdentity 完成此操作。
您不需要指定配置文件,Xcode 将在拥有团队 ID 时自动处理它。
希望这有所帮助!

1
谢谢您的建议和提供的链接。我按照它所说的做了,但是这一次出现了另一个错误。我在 platforms/ios/cordova/build.xconfig 中提到了属于我的开发团队ID,但它一直提示找不到应用程序ID的错误。我现在回到了Xcode 7.3.1,至少现在可以正常构建并安装该应用程序。只是不能运行应用程序和记录内容,但对我来说还好,因为我主要通过Safari进行调试。 - Vijay
1
您需要添加一个@kinoli。 - HipsterZipster
1
我是Cordova的新手,build.json文件应该放在哪个位置呢?谢谢。 - Daniel Sanchez
1
@DanielSanchez build.json文件放在你的项目根目录下,与config.xml文件并列。 - dpogue
非常感谢 @dpogue - Daniel Sanchez
显示剩余2条评论

5

这对我来说可行

 "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" />

尝试了几乎所有配置选项,这是唯一有效的一个。 - Eamonn Gahan
你把 build.json 文件放在哪里? - Diceble

5

我曾在使用Apache Cordova构建iOS应用过程中遇到了与xCode 8相同的问题。尝试了各种解决方案,但都没有结果。唯一有效的方法是在build.son文件中指定开发团队、包类型和配置文件,如下所示:

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

许多帖子建议指定 "codeSignIdentity": "iPhone Developer",但这会导致另一个错误,只有这个配置适用于我(也许与开发证书的创建方式有关?),希望能帮助到某些人。

嘿,我想尝试你的解决方案,但是在哪里可以找到配置文件UID? - Gyum Fox
下载证书到您的计算机上(带有.mobileprovision扩展名),并使用文本编辑器打开它,搜索<key>UUID</key>。 - Orion390

0

这有助于解决您的问题吗? - Satish Mavani

0

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

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

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


0

我更新了cordova ios 4.3.1并指定了build.json文件,就像上面提到的那样,这对我很有帮助(可能4.3.0已经包含了修复)

要更新您的平台:

cordova platform update ios


0

在升级Xcode 8.2.1和配套的Xcode命令行工具后,我遇到了类似的问题。

解决方法如下:

1)打开Xcode首选项->帐户

2)删除现有帐户(AppleID)

3)使用AppleID添加新帐户

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

5)根据需要生成新的签名标识,特别是“iOS开发”。 点击“完成”。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接