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。如何修复?