Ошибка Flutter: Getter не найден: «iMobileDevice» при попытке перестроить инструмент Flutter - PullRequest
0 голосов
/ 26 сентября 2019

Добрый день,

Я следую учебному пособию по Windows 7 для Ipad на IOS 9.3.5:

https://medium.com/flutter-community/developing-and-debugging-flutter-apps-for-ios-without-a-mac-8d362a8ec667, и я застрял на восстановление инструмента Flutter .(Последняя часть урока)

Я скачал (по ссылке урока) и скопировал в C:\src\flutter\bin libimobiledevice , ideviceinstaller и , которые двоичные файлы.Затем я запустил git apply ios.diff, который выдает мне несколько ошибок, иногда это просто mac.dart, а иногда это выглядит примерно так:

error: patch failed: packages/flutter_tools/lib/src/ios/devices.dart:103
error: packages/flutter_tools/lib/src/ios/devices.dart: patch does not apply
error: patch failed: packages/flutter_tools/lib/src/ios/ios_workflow.dart:26
error: packages/flutter_tools/lib/src/ios/ios_workflow.dart: patch does not apply
error: patch failed: packages/flutter_tools/lib/src/ios/mac.dart:124
error: packages/flutter_tools/lib/src/ios/mac.dart: patch does not apply

Затем я нашел эту команду здесь: git:патч не применяется

git apply --reject --whitespace=fix mychanges.patch 

То, что я получил, было: (не обращайте внимания на содержание Future<String>, потому что я уже изменил его на то, что он должен был быть)

Checking patch packages/flutter_tools/lib/src/ios/mac.dart...
error: while searching for:
  Future<String> getAvailableDeviceIDs() async {
    try {
      final ProcessResult result = await processManager.run(<String>['idevice_id', '-l']);
      if (result.exitCode != 0)
        throw ToolExit('idevice_id returned an error:\n${result.stderr}');
      return result.stdout;
    } on ProcessException {
      throw ToolExit('Failed to invoke idevice_id. Run flutter doctor.');

error: patch failed: packages/flutter_tools/lib/src/ios/mac.dart:124
Applying patch packages/flutter_tools/lib/src/ios/devices.dart with 1 reject...
Rejected hunk #1.
Applying patch packages/flutter_tools/lib/src/ios/ios_workflow.dart with 1 reject...
Rejected hunk #1.
Applying patch packages/flutter_tools/lib/src/ios/mac.dart with 1 reject...
Rejected hunk #1.

На этом этапе я вручную вставил нужное содержимое в файл mac.dart (как вы могли видеть в приведенной выше ошибке), но я все еще не уверен, что все прошлохорошо из-за:

error: patch failed: packages/flutter_tools/lib/src/ios/mac.dart:124

В любом случае, я продолжил и выполнил команду для перестройки инструмента флаттера:

bin\cache\dart-sdk\bin\dart --snapshot=.\bin\cache\flutter_tools.snapshot --packages=.\packages\flutter_tools\.packages .\packages\flutter_tools\bin\flutter_tools.dart

Наконец, вывод такой:

C:\src\flutter>bin\cache\dart-sdk\bin\dart --snapshot=.\bin\cache\flutter_tools.snapshot --packages=.\packages\flutter_tools\.packages .\
packages\flutter_tools\bin\flutter_tools.dart
packages/flutter_tools/lib/src/ios/ios_workflow.dart:20:30: Error: Getter not found: 'iMobileDevice'.
  bool get canListDevices => iMobileDevice.isInstalled || (xcode.isInstalledAndMeetsVersionCheck && xcode.isSimctlInstalled);
                             ^^^^^^^^^^^^^
packages/flutter_tools/lib/src/ios/ios_workflow.dart:20:30: Error: The getter 'iMobileDevice' isn't defined for the class 'IOSWorkflow'.
 - 'IOSWorkflow' is from 'package:flutter_tools/src/ios/ios_workflow.dart' ('packages/flutter_tools/lib/src/ios/ios_workflow.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'iMobileDevice'.
  bool get canListDevices => iMobileDevice.isInstalled || (xcode.isInstalledAndMeetsVersionCheck && xcode.isSimctlInstalled);
                             ^^^^^^^^^^^^^

Это iMobileDevice связано с этим libimobiledevice?Я могу запустить любой из ideviceinstaller.exe или idevice_id.exe, поэтому, я думаю, я установил его правильно.

Мне не хватает чего-то важного для исправления этой ошибки?

Большое спасибо за ваше время:)

...