JW.*_*JW. 36 xcode ios cordova xcode8
摘要:
如果您在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
Run Code Online (Sandbox Code Playgroud)
(我可以手动运行该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"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我使用的是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给科尔多瓦,我都会得到同样的错误.
ita*_*195 17
这在Xcode 8中并不直接支持.但是,在Xcode 9中,您可以将-allowProvisioningUpdates传递给xcodebuild,自动签名将像在Xcode UI中一样工作,而无需任何其他工具.
例如 cordova run ios --buildFlag="-allowProvisioningUpdates"
答案是肯定的.我使用的和我能确认的是工作,这很棒:
您可以将所有内容设置为自动:
还有很多其他的东西
在后台它使用xcodebuild命令行.我怀疑这样的事情是可能的,但只是设置,开始和享受.
因为Automatically manage signing你可以使用Fastlane.它易于安装和设置.
要在远程构建服务器上使用它 - 您可以使用Jenkins.
这里的例子.您需要设置Jenkins与Fastlane您的远程计算机.比Jenkins检查你repository thread或你只是命令它.在远程构建服务器上Jenkins运行之后Fastlane.而Fastlane将创建你写的所有证书和其他设置Fastfile.
如果您只有一个部署证书,则可以使用已Fastlane调用的服务Match
使用Git轻松地在整个团队中同步您的证书和配置文件
或者只是在本地发送和设置它.
希望它对你有所帮助,祝你好运!
这里的示例beta deploy(对我来说Xcode 9):
desc "Build devFoo and upload it to Fabric"
lane :uploadToFabric do
cocoapods
cert(
development: true,
output_path: "./fastlane"
)
sigh(
development: true,
output_path: "./fastlane"
)
clear_derived_data
gym(
scheme: "Foo",
configuration: "Debug",
clean: true,
output_directory: "./fastlane",
)
crashlytics(
api_token: "foofoofoofoo",
build_secret: "foofoofoofoo",
emails: ["foo@foo.com"],
notifications: true
)
slack(
message: "New build for test successfully deployed in Fabric",
success: true
)
end
Run Code Online (Sandbox Code Playgroud)
这里是发布部署的示例:
desc "Build and upload it to the AppStore and TestFlight"
lane :uploadToAppStore do
cocoapods
cert(
development: false,
output_path: "./fastlane"
)
sigh(
development: false,
app_identifier: "foofoo",
output_path: "./fastlane"
)
clear_derived_data
gym(
scheme: "Foo",
configuration: "Release",
clean: false,
output_directory: "./fastlane",
)
deliver(
force: true,
app_identifier: "foo",
skip_metadata: true,
skip_screenshots: true,
submit_for_review: false,
skip_binary_upload: false
)
slack(
message: "New build successfully deployed to AppStore",
success: true
)
upload_symbols_to_crashlytics(dsym_path: "./fastlane/foo.app.dSYM.zip")
slack(
message: "dSYM symbolication files uploaded to Crashlytics",
success: true
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12510 次 |
| 最近记录: |