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

Posted

技术标签:

【中文标题】Cordova 构建 iOS 错误:在路径“path/to/myApp.xcarchive”中找不到存档【英文标题】:Cordova build iOS error: archive not found at path 'path/to/myApp.xcarchive" 【发布时间】:2019-02-16 07:23:53 【问题描述】:

我一直在努力让 Cordova 在我的 iPhone 上工作和运行。我遵循以下命令,但在构建时看到以下错误:

cordova create myApp org.apache.cordova.myApp myApp
cd myApp
cordova platform add ios 
cordova build ios

我收到以下错误:

Building project: /Users/ben/Desktop/myTest/platforms/ios/myTest.xcworkspace
    Configuration: Debug
    Platform: device
User defaults from command line:
    IDEArchivePathOverride = /Users/ben/Desktop/myTest/platforms/ios/myTest.xcarchive

Build settings from command line:
    CONFIGURATION_BUILD_DIR = /Users/ben/Desktop/myTest/platforms/ios/build/device
    SHARED_PRECOMPS_DIR = /Users/ben/Desktop/myTest/platforms/ios/build/sharedpch

Build settings from configuration file '/Users/ben/Desktop/myTest/platforms/ios/cordova/build-debug.xcconfig':
    CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES
    CODE_SIGN_ENTITLEMENTS = $(PROJECT_DIR)/$(PROJECT_NAME)/Entitlements-$(CONFIGURATION).plist
    CODE_SIGN_IDENTITY = iPhone Developer
    ENABLE_BITCODE = NO
    GCC_PREPROCESSOR_DEFINITIONS = DEBUG=1
    HEADER_SEARCH_PATHS = "$(TARGET_BUILD_DIR)/usr/local/lib/include" "$(OBJROOT)/UninstalledProducts/include" "$(OBJROOT)/UninstalledProducts/$(PLATFORM_NAME)/include" "$(BUILT_PRODUCTS_DIR)"
    OTHER_LDFLAGS = -ObjC
    SWIFT_OBJC_BRIDGING_HEADER = $(PROJECT_DIR)/$(PROJECT_NAME)/Bridging-Header.h

error: archive not found at path '/Users/ben/Desktop/myTest/platforms/ios/myTest.xcarchive'
** EXPORT FAILED **

(node:4984) UnhandledPromiseRejectionWarning: Error code 65 for command: xcodebuild with args: -exportArchive,-archivePath,myTest.xcarchive,-exportOptionsPlist,/Users/ben/Desktop/myTest/platforms/ios/exportOptions.plist,-exportPath,/Users/ben/Desktop/myTest/platforms/ios/build/device
(node:4984) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:4984) [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.

我已尝试删除和添加平台。另外,卸载东西也是如此。

我使用的是 macOS High Sierra 和 Xcode 10。

【问题讨论】:

你解决了吗?我现在也收到了 可能重复:***.com/questions/52385600/… @Marshall 我不久前发布了这个问题。干杯 @LennyD,我已经回到旧版本的 Cordova,但似乎团队已经解决了它,并且有一些解决方法。我还没有机会尝试解决方法。欢呼。 github.com/apache/cordova-ios/issues/407 【参考方案1】:

here 有一个解决方法。

如果您在命令行上构建,您可以指定 --buildFlag="-UseModernBuildSystem=0":

# Cordova CLI
cordova run ios --buildFlag='-UseModernBuildSystem=0'
cordova build ios --buildFlag='-UseModernBuildSystem=0'

# Ionic CLI
ionic cordova run ios -- --buildFlag="-UseModernBuildSystem=0"
ionic cordova build ios -- --buildFlag="-UseModernBuildSystem=0"

如果您使用 build.json 配置文件进行构建,您可以在 iOS 版本或调试配置下添加以下内容:

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

如果你是在 Xcode IDE 中打开项目,你需要将 Workspace Settings 中的 build system 更改为“Legacy Build System”

【讨论】:

谢谢这对我有用 - 是否有任何已知问题,例如设置此构建标志时上传到 App Store? 原因是 Xcode 10 有一个 cordova-ios 还不支持的新构建系统。看到这个announcement。 在 XCode 10 中 - 要更改为 Legacy Build System,请使用 File->Project Settings-Build System->Legacy Build System。 “--buildflag”解决方法最初对我有用,然后没有。 Cordova Clean 也不断抛出错误/失败。一旦我切换到旧版构建,一切都很好。 不再为我工作(XCode 10,Ionic v4 beta 11)。试试这个:我遵循了上面的评论建议。打开 XCode,转到 File -> Workplace Settings -> Build System... 选择 Legacy Build System。然后,回到你的 CLI,运行: ionic cordova run ios -l 我遵循了建议,但仍然收到错误:CordovaError: Promise denied with non-error: 'Error code 65 for command: xcodebuild with args: -exportArchive,-archivePath.... 但是,它似乎仍然正确构建 .xcodeproj 文件【参考方案2】:

解决方案 - --buildFlag="-UseModernBuildSystem=0" 或设置旧版构建系统都不适合我。

由于某种原因,只有当我确定在运行 cordova build 命令之前从计算机上的 USB 上拔下 iPad 或 iPhone 时,错误才会消失。

也许我的配置有些古怪,但我想我会分享一下,以防它帮助其他人。

【讨论】:

对我来说也是如此,我几乎尝试了几个小时!这条评论救了我! 这里也一样。这应该是正确的解决方案/答案 这对我也有用。对于它的价值,在我的环境(cordova/ionic 应用程序)中,我注意到构建仍然有效,即使它出错了。 我更喜欢这个答案 拔掉我的设备似乎也对我有用。但是,当我运行 ionic cordova run -- --device 时,我必须再次插入我的设备,所以我仍然会收到错误消息。我需要通过 Xcode 本身来部署应用程序。【参考方案3】:

Cordova iOS 从 5.0.0 开始支持新的构建系统(请参阅 release notes)。

因此,请将您的 package.json 更新为 "cordova-ios": "5.0.0"(或更高版本)并调用 npm install

请注意,之后我必须清除所有内容(删除目录平台、插件、www)才能正常工作。

【讨论】:

先生,我已经尝试了上述解决方案,但出现了上述错误:错误:xcodebuild: Command failed with exit code 65 in CLI? @Kapilsoni 这实际上是一个代码签名问题,像我在上面的 cmets 中提到的那样打开 yourapp.xcworkspace,然后再次运行您的构建并设置旧的构建系统【参考方案4】:

如果您不想一直在构建标志中设置它,请打开您的 MyApp.xcworkspace 并转到:

旁注:是的,您需要始终通过在 cordova 中添加 ios 平台来执行此操作。 (例如,您删除并再次添加了 ios 平台)

文件 > 工作区设置 > 选择构建系统:旧版构建 系统

【讨论】:

不为我工作先生,出现以下错误:错误:在路径'/Users/kapil/Desktop/project/AMS/platforms/ios/AMS.xcarchive' 中找不到存档 ** EXPORT FAILED ** ? @Kapilsoni 这个档案是否存在?如果没有,添加带有ionic / cordova的ios平台,那么它应该在那里:) @Kapilsoni 你仍然没有回答,这个档案是否存在:/Users/kapil/Desktop/project/AMS/platforms/ios/AMS.xcarchive 还有另一个你应该的 xcworkspace打开。如果没有,请再次删除并添加平台,或者尝试以其他方式创建此文件。也许还有另一个错误导致了这个 操作先生,我的错误存档在该位置找不到? @Kapilsoni 只需转到路径并打开 /Users/yourusername/PROJECTS/app/platforms/ios/yourapp.xcworkspace 并设置签名和旧版构建系统并再次运行,然后它应该可以工作。昨天有这个【参考方案5】:

当您使用连接到 Mac 的设备运行 cordova ios build --prod 时也会发生这种情况。拔掉插头再试一次。

【讨论】:

以上是关于Cordova 构建 iOS 错误:在路径“path/to/myApp.xcarchive”中找不到存档的主要内容,如果未能解决你的问题,请参考以下文章

VS2017 - Ionic/Cordova - 无法构建 iOS RemoteBuild - 路径太长

Cordova iOS 构建 Libtool 失败错误

Cordova iOs 错误

`node cordova/lib/copy-www-build-step.js`在构建阶段时出现cordova构建错误

Cordova IOS 构建错误(清理项目)

检查 Cordova iOS 构建中的依赖项错误