离子ios构建失败,找不到错误存档

时间:2018-09-18 11:29:19

标签: cordova ionic-framework ionic3

我一直在试图解决这个问题,但是隧道尽头似乎没有任何亮点,因此请在这里尝试...希望您能提供帮助。

我有一个离子项目。通过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.

我在这里看到2种不同的错误:找不到存档和弃用问题。 不知道哪个人破坏了构建,但似乎找不到其中任何一个的解决方案。

离子信息:

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

任何帮助将不胜感激!

7 个答案:

答案 0 :(得分:93)

当前cordova-ios与Xcode 10不兼容

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

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

或将--buildFlag="-UseModernBuildSystem=0"添加到构建命令

完整命令应为cordova build ios --buildFlag="-UseModernBuildSystem=0"

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

答案 1 :(得分:25)

除了@jcesarmobile给出的上述答案外,另一种解决方案是通过执行以下命令,使用Ionic CLI构建应用程序:

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

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

答案 2 :(得分:19)

一个有效的build.json示例(放在您的cordova / ionic项目根目录中)如下:

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

有关build.json的更多参数,另请参阅cordova doc:https://cordova.apache.org/docs/en/latest/guide/platforms/ios/

答案 3 :(得分:1)

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

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

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

在那之后,我已经能够进行离子科尔多瓦构建ios而没有任何问题。 (即使没有buildFlag)。我不是这方面的专家,实际上,不包含离子型大声笑是一个错误。因此,尽管一切似乎都正常,但我不确定第一次仅使用cordova进行构建是否有任何缺点。也许有人可以在评论中发表一些看法

答案 4 :(得分:1)

希望这还是有帮助的。

几个陷阱:准备XCODE文件。

是时候准备在XCODE中打开项目了。 但是,Ionic-Cordova不支持XCODE的新构建系统。因此,必须为旧版构建系统准备该项目。陷阱2。 重要!断开与Mac相连的iPhone或iPad设备的连接,否则以下命令将无法使用!!!!陷阱3。

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

恭喜!您的MyApp.xcodeproj(ect)文件已准备就绪。上传IPA差不多了一半。 只需双击Myapp.xcodeproj文件或通过XCODE打开它。 Picture showing XCODE

您还会发现其他一些陷阱:

  • 没有适当的权限设置是常见的陷阱#4。在 特别是角色“开发者”(Pitfall#4.1)没有特权 将应用推送到商店
  • 再次检查“捆绑包标识符”是否与您设置的完全相同 在config.xml文件中!
  • XCODE暴露了一个签名错误Pitfall#5,因此请取消选中“自动管理签名”并再次打勾。您肯定会遇到此错误。

XCODE错误和Cordova无法正确支持新的建筑系统会导致所有这些问题。我做了full guide,展示了潜伏小时后如何修复它们。希望对您有帮助!

答案 5 :(得分:0)

就我而言,我必须在 XCODE 10.2.1

中指定快速编译器版本和工作区设置

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

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

  1. 打开 myproject-name.workspace 文件,因为已安装了cocoapods。
  2. 转到xcode中的构建设置标签。
  3. 在构建设置标签的最底部滚动,找到 Swift Compiler- 语言
  4. Swift语言版本中选择Swift版本 下拉菜单(例如:Swift 4)。

然后更改工作区设置

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

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

ionic cordova build ios

答案 6 :(得分:0)

试试下面的命令:

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