【发布时间】:2017-11-12 01:13:44
【问题描述】:
总结:
如果您在 Xcode 8 中打开一个启用了“自动管理签名”并使用新的捆绑包 ID 的项目,它将自动为其创建和下载配置文件。但是我怎样才能使xcodebuild 发生同样的事情,以便我可以在远程构建服务器上使用它?
详情:
我正在尝试在 Mac 上构建 Cordova 应用程序。 Cordova 将 Xcode 项目配置为使用“自动管理签名”,所以我正在尝试使用它。
我经常更改捆绑包 ID,因此我希望 Cordova 能够使用以前从未使用过的新捆绑包 ID 构建它。
但是当我运行 cordova build ios --release --device --buildConfig build.json 时,我得到一个返回码 65 和以下错误:
Check dependencies
No profiles for 'com.my.bundle.id' were found: Xcode couldn't find a provisioning profile matching 'com.my.bundle.id'.
Code signing is required for product type 'Application' in SDK 'iOS 10.3'
** ARCHIVE FAILED **
The following build commands failed:
Check dependencies
(1 failure)
Error: Error code 65 for command: xcodebuild with args: -xcconfig,/cordova-project/platforms/ios/cordova/build-debug.xcconfig,-workspace,MyApp.xcworkspace,-scheme,MyApp,-configuration,Debug,-destination,generic/platform=iOS,-archivePath,MyApp.xcarchive,archive,CONFIGURATION_BUILD_DIR=/cordova-project/platforms/ios/build/device,SHARED_PRECOMPS_DIR=/cordova-project/platforms/ios/build/sharedpch
(我可以手动运行那个 xcodebuild 命令并得到相同的错误,所以这可能不是 Cordova 问题。)
我的 build.json 文件如下所示:
{
"ios": {
"debug": {
"codeSignIdentity": "iPhone Developer",
"developmentTeam": "MY_TEAM_ID",
"packageType": "development"
},
"release": {
"codeSignIdentity": "iPhone Developer",
"developmentTeam": "MY_TEAM_ID",
"packageType": "enterprise"
}
}
}
我使用的是 cordova 7.0.1、cordova-ios 4.4.0、Xcode 8.3.3 和 MacOS 10.12.5。我有一个 Apple Enterprise 帐户。
我尝试了什么:
如果我在 Xcode 中打开生成的项目,它会修复自动签名,然后我可以使用该捆绑 ID 成功运行 cordova。但如果我尝试使用不同的捆绑 ID 运行它,它会再次失败。
我首先尝试使用security unlock-keychain ~/Library/Keychains/login.keychain-db,因为这在过去有效,但没有帮助。
我还尝试在 Keychain Access 中打开我的私人签名密钥并将其设置为“允许所有应用程序访问此项目”,但没有任何运气。
无论我将--debug 还是--release 传递给cordova,我都会收到相同的错误。
【问题讨论】:
-
我能够完成这项工作的唯一方法是在 build.json 中指定
provisioningProfile,尽管 Cordova documentation 表明它不再需要。 -
@JW。我希望这能帮助你 - code-dojo.blogspot.in/2012/09/…
-
@JW。也尝试手动删除本地配置文件:~/Library/MobileDevice/Provisioning Profiles(如果有)
-
@JW。在此链接中说出 Ajeet 的答案 - stackoverflow.com/questions/39500634/…
-
@Gandhi 看起来像是用于手动签名