ionic 在 iOS 14 台设备上投放。错误 "Invalid Service"
ionic serve on iOS 14 device. Error "Invalid Service"
将 iPhone6s 升级到 iOS14 并将 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 版本
- 清理构建
运行ning 在模拟器上工作正常。
我还可以通过 Xcode 在设备上执行 ionic build
和 运行。
我遇到了同样的问题。根据此 post https://github.com/ios-control/ios-deploy/issues/469 更新到 ios-deploy 1.11.2 应该可以解决问题。我已经尝试过多次 + 重新安装 Xcode 和其他选项,但没有任何效果。我很好奇 ios-deploy 的更新是否适合您,所以请告诉我!
尝试评论
if (isLockdownErrorResponse(resp)) {
throw new Error(resp.Error);
}
在文件里面
/usr/local/lib/node_modules/native-run/node_modules/node-ioslib/dist/lockdown.js
对我有用
我在使用 native-run 时遇到同样的错误。
所以我尝试在没有 native-run 的情况下 运行 它并使用带有 --no-native-run 标志的 cordova 代替。 对我有用的命令:
ionic cordova run ios -l --address=0.0.0.0 --no-native-run
所以 native-run 似乎有问题。
但实际上在 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
我通过将 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