代码签名错误:SDK“iOS 11.0”中的产品类型“应用程序”需要代码签名

我正在使用GitLab CI自动构建Android和iOS应用程序。 我的iOS命令行版本因错误而失败:

Code Signing Error: Code signing is required for product type 'Application' in SDK 'iOS 11.0'

我正在使用来自cordova-ios GitHub的master分支。 由于这具有以下修复,如此处所述: 升级到xcode 9后,将无法构建cordova应用程序,错误70,需要配置配置文件

在我的build.json我使用以下设置:

 { "android": { "debug": { "keystore": "config/android.keystore", "storePassword": "", "alias": "debug", "password" : "", "keystoreType": "" }, "release": { "keystore": "config/android.keystore", "storePassword": "", "alias": "release", "password" : "", "keystoreType": "" } }, "ios": { "debug": { "codeSignIdentity": "iPhone Developer", "developmentTeam": "", "packageType": "development", "buildFlag": [ "EMBEDDED_CONTENT_CONTAINS_SWIFT = YES", "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES=NO", "LD_RUNPATH_SEARCH_PATHS = \"@executable_path/Frameworks\"" ], "iCloudContainerEnvironment": "Development" }, "release": { "codeSignIdentity": "iPhone Developer", "developmentTeam": "", "packageType": "app-store", "buildFlag": [ "EMBEDDED_CONTENT_CONTAINS_SWIFT = YES", "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES=NO", "LD_RUNPATH_SEARCH_PATHS = \"@executable_path/Frameworks\"" ], "iCloudContainerEnvironment": "Production" } } } 

我使用iCloudContainerEnvironment因为我需要启用推送。 Als我使用正确的配置文件启动构建过程。 我使用CLI参数执行此操作,因为我为几个不同的应用程序IDS构建了应用程序: cordova build ios --device --provisioningProfile=

但无论我做什么或尝试它不签署应用程序并不断抛出错误。

编辑:

根据@Jerry Horton的建议,我将配置文件添加到build.json文件中。 我用配置文件名称和配置文件UUID尝试了它。 这两种情况都会引发以下错误,并且在platforms/ios/ dir中找不到exportOptions.plist

Code Signing Error: Provisioning profile "iOS Team Provisioning Profile: nl.XXX.loc.app" is Xcode managed, but signing settings require a manually managed profile.

我甚至删除了所有的插件,以确保它们都没有阻挡。 所以我的build.json现在看起来像这样:

 { "android": { "debug": { "keystore": "config/android.keystore", "storePassword": "", "alias": "debug", "password" : "", "keystoreType": "" }, "release": { "keystore": "config/android.keystore", "storePassword": "", "alias": "release", "password" : "", "keystoreType": "" } }, "ios": { "debug": { "codeSignIdentity": "iPhone Developer", "developmentTeam": "", "provisioningProfile": "", "packageType": "development", "buildFlag": [ "EMBEDDED_CONTENT_CONTAINS_SWIFT = YES", "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES=NO", "LD_RUNPATH_SEARCH_PATHS = \"@executable_path/Frameworks\"" ], "iCloudContainerEnvironment": "Development" }, "release": { "codeSignIdentity": "iPhone Developer", "developmentTeam": "", "packageType": "app-store", "provisioningProfile": "", "buildFlag": [ "EMBEDDED_CONTENT_CONTAINS_SWIFT = YES", "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES=NO", "LD_RUNPATH_SEARCH_PATHS = \"@executable_path/Frameworks\"" ], "iCloudContainerEnvironment": "Production" } } } 

ExportOptions.plist:

当我手动打开op XCode并手动创建存档/导出以进行调试时,我确实得到了一个IPA,在这个文件夹中有一个ExportOptions.plist ,如下所示:

     compileBitcode  method development provisioningProfiles  nl.XXX.loc.app nl.XXX.loc.app  signingCertificate iPhone Developer signingStyle manual stripSwiftSymbols  teamID TEAMID thinning <none>   

我真的看不出这里有什么问题。 也许是变薄部分?

您需要在build.json文件中指定配置文件,以便在Cordova构建阶段正确生成exportOptions.plist文件。 尝试使用一种变体来查看它是否有效,然后您可能希望为每个应用程序构建变体保留build.json的变体。 这实际上就是我在项目中所做的。 我们的grunt构建脚本在“cordova add platform”和“cordova build”之前将build-.json复制到build.json。

 "provisioningProfile": "provisioning profile name or UUID" 

运行Cordova构建命令后,成功或失败将生成exportOptions.plist @

 cordova/app/platforms/ios/exportOptions.plist 

我发现将其作为调试工具进行审核很有帮助。