Xcode 8升级到Xcode 9,构建Cordova App报requires a provisioning profile错误

时间:2022-06-01 17:42:24

Xcode 8升级到Xcode 9,重新构建Cordova app,报错:

error: exportArchive: "App Name.app" requires a provisioning profile.

Error Domain=IDEProvisioningErrorDomain Code=9 ""App Name.app" requires a provisioning profile." UserInfo={NSLocalizedDescription="App Name.app" requires a provisioning profile., NSLocalizedRecoverySuggestion=Add a profile to the "provisioningProfiles" dictionary in your Export Options property list.}

** EXPORT FAILED **

Error: Error code 70 for command: xcodebuild with args: -exportArchive,-archivePath,App Name.xcarchive,-exportOptionsPlist,/Users/Shared/Workspace/github/AppName/platforms/ios/exportOptions.plist,-exportPath,/Users/Shared/Workspace/github/AppName/platforms/ios/build/device

解决方法

这个错误主要是Cordova生成的ExportOptions.plist缺失Xcode 9所需要的key。

这个bug已经在cordova-ios 4.5.1修复,修复内容为CB-13315: (ios) fixed bug building for ios using Xcode 9

Cordova的build.json文件可以添加iCloudContainerEnvironment配置项 。iCloudContainerEnvironment = Production/Development只有在通知推送时需要。

build.json类似于:

"ios": {
    "debug": {
        "codeSignIdentitiy": "iPhone Developer",
        "developmentTeam":"MYTEAMID",
        "provisioningProfile": "provisioning profile name or UUID",
        "packageType": "developer",
        "iCloudContainerEnvironment": "Development"
    },
    "release": {
        "codeSignIdentitiy": "iPhone Distribution",
        "developmentTeam":"MYTEAMID",
        "provisioningProfile": "provisioning profile name or UUID",
        "packageType": "ad-hoc",
        "iCloudContainerEnvironment": "Production"
    }
}

其中,provisioningProfile可以为名称或者是UUID。