【问题标题】:I cant get my ionic app to open in iOS emulator我无法在 iOS 模拟器中打开我的 ionic 应用程序
【发布时间】:2019-07-10 01:35:26
【问题描述】:

我的新 ionic 应用无法在 iOS 模拟器中运行。

它全新安装了 ionic 和 Xcode,这些是我的步骤:

npm install -g ionic

ionic start myApp tabs

ionic cordova platform add ios

ionic cordova build ios

ionic cordova emulate ios

然后我得到以下错误:

没有为模拟器指定目标。部署到未定义的模拟器 /localhost/myApp/platforms/ios/build/emulator/MyApp.app/Info.plist 找不到文件。

根据这个线程 (Fresh Ionic Fails to Emulate iOS 12 - Info.plist file not found) 它应该使用以下命令:

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

然后我收到以下错误:

没有为模拟器指定目标。部署到未定义的模拟器 找不到设备类型“com.apple.CoreSimulator.SimDeviceType.undefined”。

然后根据这个线程(Issues starting iOS simulator from CLI),它应该通过像这样更新 ios-sim 来工作:

cd platforms/ios/cordova && npm install ios-sim@latest

但我仍然收到以下错误:

没有为模拟器指定目标。部署到未定义的模拟器 找不到设备类型“com.apple.CoreSimulator.SimDeviceType.undefined”。

Ionic:

   ionic (Ionic CLI)             : 4.10.2 (/usr/local/lib/node_modules/ionic)
   Ionic Framework               : @ionic/angular 4.0.1
   @angular-devkit/build-angular : 0.12.4
   @angular-devkit/schematics    : 7.2.4
   @angular/cli                  : 7.2.4
   @ionic/angular-toolkit        : 1.4.0

Cordova:

   cordova (Cordova CLI) : 8.1.2 (cordova-lib@8.1.1)
   Cordova Platforms     : ios 4.5.0
   Cordova Plugins       : cordova-plugin-ionic-keyboard 2.1.3, cordova-plugin-ionic-webview 3.1.2, (and 4 other plugins)

System:

   ios-deploy : 1.9.4
   ios-sim    : 7.0.0
   NodeJS     : v10.15.1 (/usr/local/bin/node)
   npm        : 6.4.1
   OS         : macOS Mojave
   Xcode      : Xcode 10.1 Build version 10B61

【问题讨论】:

  • 你能把ionic info的输出放在你的问题中吗?我会和我的比较一下。
  • 我可以看到我们的环境之间的唯一区别除了您使用 Ionic 4 而我使用 v3 的事实之外,您的 Cordova iOS 平台似乎较旧,我的是 ios 4.5.5 而你的是只有4.5.0 尝试删除并再次添加平台?
  • 我尝试手动将科尔多瓦平台降级到 4.5.0。之前是4.5.5
  • 是的,这很奇怪,可能是另一个愚蠢的问题,但是您是否尝试过删除平台并再次添加它 - ionic cordova platform rm ios 然后 ionic corodva platform add ios?
  • 是的,我也试过了

标签: xcode ionic-framework


【解决方案1】:

问题在于无法检测正在运行的模拟器的 ios-sim 包。 使用以下步骤更新到 8.0.1 为我解决了这个问题。

强制将 ios-sim 更新为工作版本

  1. 重要事项需要在platforms/ios/cordova 目录中完成。

    cd platforms/ios/cordova && npm install ios-sim@8.0.1

  2. 检查现在是否列出了设备,需要几秒钟

    ionic cordova emulate --list

  3. 如果尚未安装,则安装 appscript

    ionic cordova build ios

  4. 尝试部署到模拟器

    ionic cordova emulate --release --prod --livereload ios -- --buildFlag="-UseModernBuildSystem=0"

这将找到任何正在运行的模拟器并部署应用程序

【讨论】:

    【解决方案2】:

    该问题与 Xcode 10 上尚未反映在 ios-sim 上的重大更改有关。您可以查看 ion-sim repo 问题"List empty of devices simulator with Xcode 10"。

    该问题已修复,但正在等待新版本提交。

    您可以直接从 Xcode 在模拟器上继续运行您的应用程序。

    【讨论】:

      【解决方案3】:

      尝试只构建项目,然后先从 Xcode 运行它。

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

      然后在 Xcode 中打开 platforms/ios 文件夹,您将能够从那里运行它,并查看项目可能存在的任何错误。当您最终决定将应用推送到商店时,无论如何您都需要这样做。

      编辑

      然后尝试针对特定的模拟器:

      • ionic cordova emulate ios --list 获取可用目标列表以复制到下一个命令中。

      • ionic cordova emulate --livereload ios -- --buildFlag="-UseModernBuildSystem=0" --target="iPhone-X, 12.1" 针对 iPhone XR 的示例。

      【讨论】:

      • 是的,但是我不能使用 livereload 功能:|
      • 刚刚在我的机器上尝试过,当我运行 ionic cordova emulate --release --prod --livereload ios -- --buildFlag="-UseModernBuildSystem=0" 测试产品构建时,它按预期工作。
      • 尝试针对特定的模拟器,我会更新我的答案。
      • tbh 我以前从未使用过 emulate 的 livereload 功能,很高兴我现在回答了这个问题,将来真的会加快速度:-)
      • ionic cordova emulate ios --list 给了我一个空列表
      猜你喜欢
      • 1970-01-01
      • 2015-01-14
      • 2019-07-07
      • 1970-01-01
      • 2013-03-19
      • 1970-01-01
      • 2015-03-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多