代码之家  ›  专栏  ›  技术社区  ›  El Dude

空白应用程序调试生成失败-找不到/Info.plist文件

  •  9
  • El Dude  · 技术社区  · 7 年前

    在更大的上下文中,我返回到创建一个空白项目并运行我的构建命令。

    ionic start myApp blank
    cd myApp
    ionic cordova run ios --debug --target="iPhone-8"  --consolelogs
    
    
    
    ionic-app-scripts build --target cordova --platform ios
    [11:39:29]  ionic-app-scripts 3.2.0 
    [11:39:29]  build dev started ... 
    [11:39:30]  clean started ... 
    [11:39:30]  clean finished in 1 ms 
    [11:39:30]  copy started ... 
    [11:39:30]  deeplinks started ... 
    [11:39:30]  deeplinks finished in 15 ms 
    [11:39:30]  transpile started ... 
    [11:39:33]  transpile finished in 3.16 s 
    [11:39:33]  preprocess started ... 
    [11:39:33]  preprocess finished in 1 ms 
    [11:39:33]  webpack started ... 
    [11:39:33]  copy finished in 3.31 s 
    [11:39:37]  webpack finished in 4.35 s 
    [11:39:37]  sass started ... 
    [11:39:38]  sass finished in 1.27 s 
    [11:39:38]  postprocess started ... 
    [11:39:38]  postprocess finished in 10 ms 
    [11:39:38]  lint started ... 
    [11:39:38]  build dev finished in 8.92 s 
    [11:39:41]  lint finished in 2.65 s 
    > cordova run ios --debug --target iPhone-8
    Building for iPhone 8 Simulator
    Building project: /myApp/platforms/ios/myApp.xcworkspace
        Configuration: Debug
        Platform: emulator
    Build settings from command line:
        CONFIGURATION_BUILD_DIR = 
    /myApp/platforms/ios/build/emulator
        SDKROOT = iphonesimulator12.0
        SHARED_PRECOMPS_DIR = 
    /myApp/platforms/ios/build/sharedpch
    
    Build settings from configuration file '
    /myApp/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
    
    /myApp/platforms/ios/build/emulator/myApp.app/Info.plist file not found.
    [ERROR] An error occurred while running subprocess cordova.
    
            cordova run ios --debug --target iPhone-8 exited with exit code 1.
    
            Re-running this command with the --verbose flag may provide more 
            information.
    
    ionic --version
    4.1.2
    cordova --version
    8.0.0 & @latest 8.1.1
    XCode Version 10.0 (10A255) + build tools
    macOS 10.13.6 - High Sierra. Mojave on a different machine fails the same.
    

    --------------修复--------------

    再加上@DaveAlden的回答,这就是我如何在没有bug的情况下备份到livereload的原因:

    ionic cordova platform remove ios sudo npm install -g ionic@3.20.0 ionic cordova platform add ios open platform/ios/MyApp.xcworkspace

    按照说明返回到上的旧版生成系统 https://github.com/apache/cordova-ios/issues/407

    运行我的构建脚本,不使用 --buildFlag='-UseModernBuildSystem=0'

    3 回复  |  直到 7 年前
        1
  •  38
  •   DaveAlden    7 年前

    这个问题是因为xcode10包含了一个新的构建系统,该系统当前与不兼容 cordova-ios@4 - see here .

    目前的解决方案是使用 --buildFlag='-UseModernBuildSystem=0' 指示Xcode使用旧构建系统的选项,例如:

     cordova run ios --debug --target "iPhone-8" --buildFlag='-UseModernBuildSystem=0'
    

    更新: 为了方便起见,我将其包装在shell脚本中:

    #!/bin/bash
    # Adds build flag to make cordova-ios@4 work with Xcode 10
    cordova "$@" --buildFlag='-UseModernBuildSystem=0'
    

    我把这个保存在一个叫做 cordova-xcode10 ,确保它在路径中并使其可执行( chmod a+x cordova-xcode10 ),然后我可以做:

    cordova-xcode10 run ios --target "iPhone-8"
    

        2
  •  6
  •   Derk Jan Speelman    7 年前

    我用两种方法解决了这个问题。

    1. 在项目的根目录下创建build.json文件。

    在build.json中编写以下代码。

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

    • ionic cordova build ios
    • ionic cordova run ios
    • ionic cordova run ios --target="iPhone-6s" -l
        3
  •  1
  •   Ciprian    7 年前

    这对我有用

    Open your workspace file, then File --> WorkSpace Settings
    
    In shared Workspace settings, choose Build System: Legacy Build System.
    
    Then run ionic cordova run -l
    

    来源(最后评论): https://forum.ionicframework.com/t/fresh-ionic-fails-to-emulate-ios-12-info-plist-file-not-found/142291

    更新

    我刚刚发现CordovaiOS5.0.0已经发布了。 https://cordova.apache.org/announcements/2019/02/09/cordova-ios-release-5.0.0.html

        4
  •  1
  •   Brickyenne    7 年前

    cd platforms/ios/cordova && npm install ios-sim@latest
    
        5
  •  0
  •   uyghurbeg    7 年前

    这对我很有用:

    cordova run ios --debug --target "iPhone-8" --buildFlag='-UseModernBuildSystem=0'
    
        6
  •  0
  •   Jovany Mezura    6 年前

    仅在命令中添加此标志

    cordova run ios --device --buildFlag='-UseModernBuildSystem=0' --verbose