Xcode 升级到10.x 之后 ionic cordova build ios 失败的解决

问题描述

Xcode 升级到10.0 或10.1 之后再次通过命令行cordova build ios 失败,没有错误提示,运行到‘SWIFT_OBJC_BRIDGING_HEADER’后直接退出build命令。

错误提示

Build settings from configuration file '/***/****/*****/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

问题截图

原因

Xcode 10默认使用新的构建系统(以前在Xcode 9中选择加入)。cordova-ios项目结构与这个新的构建系统不兼容并导致失败。
Cordva官方并不声称支持Xcode 10。
目前最好的解决方法是选择退出新的构建系统:

  • 命令行构建项目的方式:指定 --buildFlag="-UseModernBuildSystem=0":
ionic cordova run ios -- --buildFlag="-UseModernBuildSystem=0"
ionic cordova build ios -- --buildFlag="-UseModernBuildSystem=0"
  • 如果使用build.json配置文件构建:
 "ios": {
    "release": {
      "buildFlag": [
        "-UseModernBuildSystem=0"
      ]
    }
  }
  • 如果要在Xcode中打开项目,则需要将Workspace Settings中的构建系统更改为“Legacy Build System”:

(解决办法来自github)[https://github.com/apache/cordova-ios/issues/407]

原文地址:https://www.cnblogs.com/hzyy/p/10006158.html