昨天我们从xcode 8.3.2升级到版本9.现在我们的企业分发apache cordova ios app拒绝构建。
2017-09-21 07:37:16.787 xcodebuild[70400:217569] [MT] IDEDistribution: -[IDEDistributionLogging _createLoggingBundleAtPath:]: Created bundle at path '/var/folders/wj/yj3cfvh954gbc_btlhcrcx7nk7t4dj/T/App Name_2017-09-21_07-37-16.786.xcdistributionlogs'.
2017-09-21 07:37:16.938 xcodebuild[70400:217569] [MT] IDEDistribution: Step failed: <IDEDistributionSigningAssetsStep: 0x7ff756bbdf70>: Error Domain=IDEDistributionSigningAssetStepErrorDomain Code=0 "Locating signing assets failed." UserInfo={NSLocalizedDescription=Locating signing assets failed., IDEDistributionSigningAssetStepUnderlyingErrors=(
"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.}"
)}
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
(我将应用名称替换为&#34;应用名称&#34;针对此问题)
我已经验证所有证书和配置文件都是在xcode中设置的。并且build.json已设置。我不是一个真正的Mac家伙,而且我很难接下来要做什么。
-Edit,将xcode降级到8.3.3解决了这个问题。不是一个理想的解决方案,但我无能为力。
答案 0 :(得分:63)
如果您明确指定配置文件,就像我一样。在你的Cordova build.json中就像这样:
"ios": {
"debug": {
"codeSignIdentitiy": "iPhone Developer",
"developmentTeam":"MYTEAMID",
"packageType": "developer",
"iCloudContainerEnvironment": "Development"
},
"release": {
"codeSignIdentitiy": "iPhone Distribution",
"developmentTeam":"MYTEAMID",
"provisioningProfile": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"packageType": "ad-hoc",
"iCloudContainerEnvironment": "Production"
}
}
请注意 iCloudContainerEnvironment =只有在使用推送通知
时才需要生产/开发您需要明确设置手动签名,并在Cordova生成的ExportOptions.plist中提供配置密钥。不幸的是,Cordova目前没有生成所有必需的密钥。
至少对我来说,这是它需要的样子:
<?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>ad-hoc</string>
<key>iCloudContainerEnvironment</key >
<string>Production</string>
<key>provisioningProfiles</key>
<dict>
<key>my.bundle.idenifier</key>
<string>My Provisioning Profile Name</string>
</dict>
<key>signingCertificate</key>
<string>iPhone Distribution</string>
<key>signingStyle</key>
<string>manual</string>
<key>stripSwiftSymbols</key>
<true/>
<key>teamID</key>
<string>YOURTEAMID</string>
<key>thinning</key>
<string><none></string>
</dict>
</plist>
Cordova生成的文件@ cordova / app / platforms / ios / 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>development</string>
<key>teamID</key>
<string>MYTEAMID</string>
</dict>
</plist>
注意它缺少Xcode 9所需的重要位。
我通过手动归档构建生成了正确的文件,然后导出它,这也创建了我现在用作引用的exportOptions.plist。
深入挖掘后,我发现在运行&#34; Cordova添加平台iOS&#34;后无法修复,因为它是在构建阶段动态生成的。我决定分叉Cordova-ios repo并提交拉取请求。您可以直接使用我的fork,或者等到pull请求合并。
提取请求 https://github.com/apache/cordova-ios/pull/338/commits
<强>叉强> https://github.com/jrryhrtn/cordova-ios
来自请求的使用说明
请参阅下面的示例,请注意,配置文件可以是配置文件的名称或UUID。名称是maintenence的首选,因为UUID每次都会更改以重新生成配置文件。
{
"ios": {
"debug": {
"codeSignIdentity": "iPhone Developer",
"developmentTeam":"YOURTEAMID",
"provisioningProfile": "provisioning profile name or UUID",
"packageType": "development"
},
"release": {
"codeSignIdentity": "iPhone Distribution",
"developmentTeam":"YOURTEAMID",
"provisioningProfile": "provisioning profile name or UUID",
"packageType": "ad-hoc"
}
}
}
我计划手动修补,直到/ a修复程序合并到下一个Cordova版本中。通过&#34; Cordova平台rm iOS&#34;补丁后,您将不得不重新生成您的iOS平台。然后&#34; Cordova平台添加〜/ forks / cordova-ios&#34;。 〜/ forks / cordova-ios我的本地路径,使用您下载分叉Cordova-ios仓库的本地机器上的路径。
<强>更新强>
cordova-ios 4.5.2已正式发布!通过运行以下命令进行升级:&#34; cordova platform rm ios&#34;,然后&#34; cordova平台添加ios@4.5.2"
干杯!
答案 1 :(得分:3)
虽然帮助即将来临,但您不想直接使用Xcode(我不会评判您)......这是一个临时解决方案,对我来说很好:
删除ios
cordova platform rm ios
从开发早午餐添加ios this issue already fixed。 (稍后你将能够使用ios v4.6.0或者最终的#)
cordova platform add https://github.com/apache/cordova-ios.git
我希望它也能帮到你!
答案 2 :(得分:0)
对于谁犯以下错误
error: exportArchive: exportOptionsPlist error for key 'iCloudContainerEnvironment': expected one of {Development, Production}, but no value was provided
创建构建所需的所有操作
ionic cordova build ios --prod --release -- --iCloudContainerEnvironment=Production
更多信息: