Ionic iOS 构建失败,找不到错误存档

Posted

技术标签:

【中文标题】Ionic iOS 构建失败,找不到错误存档【英文标题】:Ionic iOS build fails, error archive not found 【发布时间】:2019-02-22 10:22:48 【问题描述】:

我有一个 Ionic 项目。通过ionic serve 运行得到了我期望的结果,没有问题。

但是,当运行ionic cordova run ios -lc 之类的命令时,我收到一个中断构建过程的错误。我收到的错误如下:

[cordova]  error: archive not found at path '/Users/path-to-app/platforms/ios/demoapp.xcarchive
[cordova]  ** EXPORT FAILED **
[cordova]
[cordova]  (node:5866) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error code 65 for command: xcodebuild with args: -exportArchive,-archivePath,demoapp.xcarchive,-exportOptionsPlist,/Users/path-to-app/platforms/ios/exportOptions.plist,-exportPath,/Users/path-to-app/platforms/ios/build/device
[cordova]  (node:5866) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.`

我在这里看到两个不同的错误:找不到存档和弃用问题。

我不知道哪个破坏了构建,但我似乎无法为其中任何一个找到解决方案。

离子信息:

Ionic:

   ionic (Ionic CLI)  : 4.1.2
   Ionic Framework    : ionic-angular 3.9.2
   @ionic/app-scripts : 3.2.0

Cordova:

   cordova (Cordova CLI) : 8.0.0
   Cordova Platforms     : android 7.0.0, browser 5.0.4, ios 4.5.5
   Cordova Plugins       : no whitelisted plugins (0 plugins total)

System:

   Android SDK Tools : 25.1.7 (/Users/Vincent/Library/Android/sdk)
   ios-deploy        : 1.9.2
   NodeJS            : v9.1.0 (/usr/local/bin/node)
   npm               : 6.4.1
   OS                : macOS High Sierra
   Xcode             : Xcode 10.0 Build version 10A255

【问题讨论】:

【参考方案1】:

目前 cordova-ios 与 Xcode 10 不兼容

您可以尝试禁用 Xcode 10 使用的新构建系统,并通过将其添加到您的 build.json 文件来使用旧系统

"buildFlag": [
  "-UseModernBuildSystem=0"
]

或在构建命令中添加--buildFlag="-UseModernBuildSystem=0"

完整的命令应该是cordova build ios --buildFlag="-UseModernBuildSystem=0"

或者对于离子ionic cordova build ios -- --buildFlag="-UseModernBuildSystem=0"

【讨论】:

我没有 build.json 文件,它在哪里? build.json 在开发过程中不是必需的,因此您可以使用 --buildFlag 参数代替。 build.json 文件用于配置应用程序的构建配置,专门用于发布模式。请参阅cordova.apache.org/docs/en/8.x/guide/platforms/ios/… 的文档。您只需在项目的根目录上创建它 奇怪,它对我不起作用我尝试了 ionic cordova build ios --buildFlag="-UseModernBuildSystem=0" 但得到了同样的错误。这也适用于 ionic 命令吗? @jcesarmobile:我的构建不断损坏,而且我无法在具有免费苹果 ID 和团队设置的设备上运行该应用程序。苹果是否也取消了通过个人团队在设备中运行项目的支持? 仅供参考,这是 文件 > 工作区设置... >> 构建系统 如果您更愿意采用 GUI 路线【参考方案2】:

除了answer given by jcesarmobile,另一种解决方案是使用 Ionic CLI 通过执行以下命令来构建应用程序:

ionic cordova build ios -- --buildFlag="-UseModernBuildSystem=0"

根据ionic build 命令的the documentation,要将其他选项传递给Cordova CLI,您应该在Ionic CLI 参数之后使用-- 分隔符。通过 Ionic CLI 而不是 Cordova CLI 执行 build 命令还将构建 Web 资产并在 Cordova 构建应用程序之前提供友好的检查。

【讨论】:

【参考方案3】:

一个工作 build.json 文件的示例(放置到您的 Cordova / Ionic 项目根目录中)是以下内容:

 
  "ios": 
    "debug": 
      "buildFlag": [
        "-UseModernBuildSystem=0"
      ]
    ,
    "release": 
      "buildFlag": [
        "-UseModernBuildSystem=0"
      ]
    
  

有关文件 build.json 的更多参数,另请参阅 Cordova 文档:iOS Platform Guide

【讨论】:

【参考方案4】:

jcesarmobile 建议的命令对我不起作用,但对我有用

cordova build ios --buildFlag="-UseModernBuildSystem=0"

(无离子) 成功完成构建。

在那之后,我已经能够毫无问题地进行 ionic cordova build ios。 (即使没有 buildFlag)。我不是这方面的专家,事实上不包括离子大声笑是错误的。因此,尽管一切似乎都正常,但我不确定第一次仅使用cordova 构建是否有任何缺点。也许有人可以在 cmets 中发光

【讨论】:

【参考方案5】:

几个陷阱:准备 Xcode 文件。

是时候准备要在 Xcode 中打开的项目了。 但是,Ionic-Cordova 不支持 Xcode 的 new 构建系统。所以项目必须为 legacy 构建系统做好准备。陷阱 #2。

重要!断开连接到 Mac 的 iPhone 或 iPad 设备,否则以下命令将不起作用!!!陷阱 #3。

ionic cordova build ios --prod --buildFlag='-UseModernBuildSystem=0'

恭喜!您的 MyApp.xcodeproj(等)文件已准备就绪。您几乎完成了上传 IPA 的一半。 只需双击 Myapp.xcodeproj 文件或通过 Xcode 打开即可。

您还会发现其他几个陷阱:

没有正确的权限集是常见的陷阱 #4。在 特别是角色“开发者”(陷阱#4.1)没有特权 将应用推送到应用商店 仔细检查“Bundle Identifier”是否正是您设置的那个 在 config.xml 文件中! Xcode 暴露了一个签名错误,陷阱 #5,所以取消勾选“自动管理签名”并再次勾选。你肯定会遇到这个错误。

Xcode 错误和 Cordova 无法正确支持新的构建系统会导致所有这些问题。我做了一个full guide,展示了如何在潜伏数小时后修复它们。

【讨论】:

【参考方案6】:

在我的情况下,我必须在 XCODE 10.2.1 中指定 swift 编译器版本和工作区设置

注意:在我的项目中,我安装了 Onesignal 插件

首先我指定了 swift 编译器版本。

    打开 myproject-name.workspace 文件,因为安装了 cocoapods。 转到 xcode 中的 Build Settings 选项卡。 滚动构建设置选项卡的最底部找到 Swift 编译器 - 语言。 从 Swift 语言版本中选择 Swift 版本 下拉(例如:Swift 4)。

然后更改工作区设置

    转到 Xcode 文件菜单 选择工作区设置 从构建系统下拉菜单中选择旧版构建系统 点击完成

毕竟尝试在终端中使用以下命令进行重建

ionic cordova build ios

【讨论】:

【参考方案7】:

试试下面的命令:

ionic cordova build ios -- --buildFlag="-UseModernBuildSystem=0"

【讨论】:

以上是关于Ionic iOS 构建失败,找不到错误存档的主要内容,如果未能解决你的问题,请参考以下文章

由于找不到“Cordova/CDVViewController.h”文件,离子应用程序存档在 xcode 7.2 中失败

找不到 play-services-auth-base-license.aar - Ionic android 构建失败

Cordova 构建 iOS 错误:在路径“path/to/myApp.xcarchive”中找不到存档

Ionic 构建/运行 ios 失败,错误代码为 65。如何修复?

Ionic + Cordova Android 构建错误 - 找不到 tools.jar

Ionic android 构建错误 - 找不到“ANDROID_HOME”环境变量