使用 VSTS 构建 ionic 应用并将其部署到 android 和 IOS

Posted

技术标签:

【中文标题】使用 VSTS 构建 ionic 应用并将其部署到 android 和 IOS【英文标题】:Using VSTS to build and deploy ionic app to both android and IOS 【发布时间】:2017-11-21 14:55:27 【问题描述】:

我有一个 ionic v1 应用程序,我正在尝试使用 Visual Studio Team Services 构建定义来创建应用程序的 androidios 版本。该应用程序适用于 ios 和 android。我现在在应用程序的 Xcode IOS 构建时遇到了问题。

ionic cordova build ios --release

上述命令创建了 ios 平台以及 xcode 项目和工作区文件。

然后我有以下 VSTS XCode 任务来尝试为 ios 应用程序构建 ipa 文件。

我已经创建了 p12 证书和配置文件并将它们添加到项目中。运行构建定义时,两者都会通过。

这是我的 Xcode 构建配置

此时构建定义失败并出现以下错误

Code Signing Error: App has conflicting provisioning settings. App is automatically signed for development, but a conflicting code signing identity iPhone Distribution has been manually specified. Set the code signing identity value to "iPhone Developer" in the build settings editor, or switch to manual signing in the project editor.

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

【问题讨论】:

您使用私有构建代理吗?可以手动构建吗? 是的,它将手动构建,但需要它作为 CICD 管道的一部分使用 VSTS 构建。我尝试过勾选和取消勾选自动签名 您能否验证这些构建变量是否被正确传递并且它们是正确的值?也可能值得尝试另一个构建,但未选中“自动签名”复选框。 在创建供应配置文件时,您是否设置了具有自动和代码签名身份的供应配置文件? 【参考方案1】:

在尝试了手动和自动签名都没有任何乐趣之后,我终于通过一些小的调整让它工作了。

    安装苹果证书时,选择临时钥匙串并提供密码。如果您不使用此选项,构建代理将等待用户输入钥匙串密码,从而导致构建超时。 切换到手动签名。 在苹果证书安装任务和 Xcode 构建任务中,将“证书签名身份”设置为证书的全名,包括括号中的团队名称。

【讨论】:

对于 Xcode 构建任务来说,在 Signing identity 参数(或 codeSignIdentitiy)中拥有 Apple 证书的完整名称非常重要,例如:iPhone Distribution: TEAM_NAME (TEAM_ID)【参考方案2】:

就我而言,我能够在根级别构建、存档和导出将 build.json 文件集成到项目结构中的 ionic iOS App:


   "ios": 

      "release": 
          "codeSignIdentitiy": "iPhone Distribution: TEAM_NAME (TEAM_ID)",
          "developmentTeam":"TEAM_ID",
          "provisioningProfile": "UUID",
          "packageType": "ad-hoc" 
      
  

请注意,在我的情况下,我想生成临时分发,但您可以为商店、开发或企业分发生成应用程序。

准备和构建项目后,将在 iOS Cordova 项目中生成一个 exportOptions.plist 文件,其中包含导出应用程序和生成 IPA 文件的所有配置。

在此处查看有关使用 build.json 的 cordova 文档:https://cordova.apache.org/docs/en/latest/guide/platforms/ios/

然后,在 Xcode VSTS 任务中,我遵循了来自 @psyco 的所有建议: 使用签名身份的全名和配置文件 UUID 进行手动签名。

还要考虑到对于配置文件名称,Xcode 9(目前在 VSTS Mac OS 代理上默认使用的名称)不接受 Xcode 生成的配置文件(名称中带有“XC iOS”),我的就是这样,找到解决方案很奇怪,多亏了 Cœur Xcode 9: Provisioning profile is Xcode managed, but signing settings require a manually managed profile

有了这些,我终于可以做到了,并且还使用另一个 VSTS 任务将 IPA 发送到 App Center,这样 IC 循环就完成了。

【讨论】:

以上是关于使用 VSTS 构建 ionic 应用并将其部署到 android 和 IOS的主要内容,如果未能解决你的问题,请参考以下文章

如何将 VSTS 上的构建配置为 FTP 部署

在AWS中使用VSTS Build的最简单方法是什么?

从 VSTS 发布管理将网站构建部署到 Azure

如果没有 VSTS 中的构建定义,是不是可以在 VSTS 中创建发布定义?

PhoneGap Ionic 项目未在 iOS 设备上执行 $http.post

如何使用 ionic3 从应用商店获取 iOS 部署的版本号