【问题标题】:ionic serve on iOS 14 device. Error "Invalid Service"iOS 14 设备上的离子服务。错误“无效服务”
【发布时间】:2021-01-05 09:55:48
【问题描述】:

将 iPhone6s 升级到 iOS 14 并将 Xcode 升级到最新版本后,我无法提供该应用程序。

错误堆栈如下

Error: InvalidService
    at LockdownProtocolReader.parseBody (/usr/local/lib/node_modules/native-run/node_modules/node-ioslib/dist/protocol/lockdown.js:35:19)
    at LockdownProtocolReader.onData (/usr/local/lib/node_modules/native-run/node_modules/node-ioslib/dist/protocol/protocol.js:52:40)
    at TLSSocket.emit (events.js:315:20)
    at addChunk (_stream_readable.js:295:12)
    at readableAddChunk (_stream_readable.js:271:9)
    at TLSSocket.Readable.push (_stream_readable.js:212:10)
    at TLSWrap.onStreamRead (internal/stream_base_commons.js:186:23)

使用--verbose 运行会显示错误的根源

client:lockdownd startService: com.apple.debugserver +898ms
  protocol:lockdown socket write: {"Request":"StartService","Service":"com.apple.debugserver"} +206ms
  protocol:lockdown Response: {"Error":"InvalidService","Request":"StartService","Service":"com.apple.debugserver"} +6ms
  native-run Caught fatal error: Error: InvalidService

我的服务脚本是

ionic cordova run iOS --l --debug --device --address=0.0.0.0 --sourceMap=true

离子信息:

Ionic:

   Ionic CLI                     : 6.11.8 (/usr/local/lib/node_modules/@ionic/cli)
   Ionic Framework               : @ionic/angular 5.2.2
   @angular-devkit/build-angular : 0.900.7
   @angular-devkit/schematics    : 9.1.4
   @angular/cli                  : 9.1.4
   @ionic/angular-toolkit        : 2.2.0

Cordova:

   Cordova CLI       : 9.0.0 (cordova-lib@9.0.1)
   Cordova Platforms : ios 5.1.1
   Cordova Plugins   : cordova-plugin-ionic-keyboard 2.2.0, cordova-plugin-ionic-webview 4.2.1, (and 20 other plugins)

Utility:

   cordova-res                          : not installed
   native-run (update available: 1.1.0) : 1.0.0

System:

   ios-deploy : 1.10.0
   ios-sim    : 8.0.2
   NodeJS     : v12.18.0 (/usr/local/bin/node)
   npm        : 6.14.5
   OS         : macOS Catalina
   Xcode      : Xcode 12.0 Build version 12A7209

到目前为止我已经尝试过什么。

  • 重启 Mac
  • 重启 iPhone
  • 确保已安装最新的 iOS/Mac/Xcode 版本
  • 干净的构建

在模拟器上运行运行良好顺便说一句。 我也可以在设备上执行ionic build并通过Xcode运行。

【问题讨论】:

  • 我遇到了同样的问题。我认为它与这个错误有关,首先发生:iPhoneConnect: Failed _shouldMakeReadyForDevelopment check even though device is not locked by passcode.

标签: ios xcode cordova ionic-framework xcode12


【解决方案1】:

我通过将native-run 更新到 1.2.1 解决了这个问题(请参阅https://github.com/ionic-team/native-run/issues/60,2020-09-28 在 1.2.0 中添加了对 iOS 14 的支持):

npm i -g native-run@latest

【讨论】:

  • 由于此版本包含实际修复而不是解决方法(切换到 Cordova 运行),我将其标记为当前接受的答案。
【解决方案2】:

所以本地运行似乎有问题。

但实际上在 ionic-cli 中,您可以传递一个参数来使用 cordova 而不是 native-run,它的工作原理:

ionic cordova run ios --no-native-run

我的个人命令:

ionic cordova run ios --livereload --consolelogs --buildFlag='-UseModernBuildSystem=0'  --external --no-native-run

【讨论】:

    【解决方案3】:

    我在使用原生运行时遇到了同样的错误。

    所以我尝试在没有 native-run 的情况下运行它,并使用带有标志 --no-native-run 的 cordova 代替。 对我有用的命令:

    ionic cordova run ios -l --address=0.0.0.0 --no-native-run
    

    【讨论】:

      【解决方案4】:

      尝试评论

           if (isLockdownErrorResponse(resp)) {
               throw new Error(resp.Error);
           }
      

      文件内

      /usr/local/lib/node_modules/native-run/node_modules/node-ioslib/dist/lockdown.js

      它对我有用

      【讨论】:

      • 我会尽快尝试,但这不是一个理想的长期解决方案。
      • 文件夹 /node-ioslib/ 对我来说不存在
      【解决方案5】:

      我也有同样的问题。根据这篇帖子https://github.com/ios-control/ios-deploy/issues/469,对 ios-deploy 1.11.2 的更新应该可以解决问题。我已经尝试过多次 + 重新安装 Xcode 和其他选项,但没有任何效果。我很好奇 ios-deploy 的更新是否对你有用,所以请告诉我!

      【讨论】:

      • 我尝试升级到 1.11.2。通过自制软件安装它,更新了 XCode 命令行工具等,但错误仍然存​​在。
      • 好的,我也一样。我不明白其他人是如何解决这个问题的。同时,我将尝试一个新的 ionic 项目,并尝试通过 cli 部署它,看看错误是否仍然存在。
      猜你喜欢
      • 2021-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-14
      • 1970-01-01
      • 2018-07-14
      • 1970-01-01
      相关资源
      最近更新 更多