Приложение Flutter для iOS в симуляторе iOS, работающем на M1 Mac

Есть ли проблема с приложениями Flutter iOS на симуляторе iOS (iPhone 12 Pro Max), работающем на Mac M1 с Big Sur 11.2.2 и Flutter 1.22.6?

Видите ли, мое приложение Flutter для iOS (с использованием нескольких плагинов Flutter) было разработано на Mac с процессором Intel под управлением Catalina (10.15.7) и Flutter 1.22.5, и оно работает, но когда я перешел на Mac на базе M1 с Big Sur и Flutter 1.22.6, у меня ошибка Cocoapod:

[!] Automatically assigning platform `iOS` with version `9.0` on target `Runner` because no platform was specified. Please specify a platform for this target in your Podfile.

Обратите внимание, что на этом Mac M1 «флаттер-доктор» работает успешно, и я могу создать тестовое приложение Flutter и запустить его на симуляторе iOS, поэтому я думаю, что его настройка выполнена правильно.

Я также пробовал решения, предложенные в прошлых сообщениях с этим симптомом, но безрезультатно. Я пробовал следующее:

1- Я раскомментировал строку «платформа: ios, 9.0» в моем файле pods.

2- Я выполнил следующие команды CLI в терминале:

flutter clean
rm -Rf ios/Pods
rm -Rf ios/.symlinks
rm -Rf ios/Flutter/Flutter.framework
rm -Rf ios/Flutter/Flutter.podspec
cd ios
pod install
cd ..
flutter build ios

Результатом использования обоих приведенных выше предложений является одна и та же ошибка «Ошибка запуска установки модуля» без каких-либо других сообщений об ошибках.

Единственное, о чем я могу думать на данный момент, это проблема с плагинами Flutter, которые я использую при работе в симуляторе iOS на M1. Опять же, эти плагины работают на Mac с процессором Intel под управлением Catalina. Если это так, к сожалению, ошибка не говорит мне, какой именно. Плагины, которые я использую:

dependencies:
  flutter:
    sdk: flutter
  provider: ^4.1.3
  sqflite: ^1.3.2+1
  googleapis: ^0.56.1
  googleapis_auth: ^0.2.12
  http: ^0.12.2
  url_launcher: ^5.7.2
  flutter_secure_storage: ^3.3.5
  tuple: ^1.0.3
  image_picker: ^0.6.7+12
  intl: ^0.16.1
  fraction: ^1.2.1
  archive: ^2.0.13
  path_provider: ^1.6.24
  path: ^1.7.0
  image_cropper: ^1.3.1
  flutter_image_compress: ^0.7.0

Вся помощь / предложения с благодарностью.


person Jose    schedule 31.03.2021    source источник
comment
Вы пробовали запустить его на физическом устройстве? ошибка, возникающая до сих пор, находится на уровне сборки и до сих пор не достигла рендеринга или проблем M1, если таковые имеются.   -  person Huthaifa Muayyad    schedule 31.03.2021
comment
@HuthaifaMuayyad, я не пробовал запускать его на физическом устройстве на M1. Я попытался запустить его на физическом устройстве, как iOS, так и Android, на Mac с процессором Intel под управлением Catalina, и он отлично работает. Я попробую это на M1, как только найду свой iPhone. Что касается устройств Android, мой VSCODE, похоже, не распознает устройство, что является еще одной проблемой, которую мне нужно решить.   -  person Jose    schedule 31.03.2021
comment
Вы загрузили Android SDK, даже если вы работаете на Mac, SDK необходим, потому что он содержит диспетчер ADB, необходимый для отладки Android. Вчера я столкнулся с проблемой на bigSur, но не на M1, симулятор не поддерживал запуск релизной сборки. Вы запускали установку модуля из папки iOS? Не только папка родительского проекта? попробуйте перейти в ios или ios/runner.   -  person Huthaifa Muayyad    schedule 31.03.2021
comment
Спасибо, Хутальфа. Сейчас я загружаю Android Studio, чтобы запустить ее на устройстве Android и посмотреть, будет ли это возможно.   -  person Jose    schedule 31.03.2021
comment
Пожалуйста, держите нас в курсе, мне лично интересно. Кроме того, если проблема заключается в зависимости, pod install обязательно будет вас раздражать, но похоже, что в вашей среде происходит что-то еще, что еще не достигает этого уровня.   -  person Huthaifa Muayyad    schedule 31.03.2021
comment
@HuthaifaMuayyad, извините за поздний ответ. Преследуя реальный маршрут устройства Android, я смог создать app-debug.apk, но во время установки на устройстве я получаю странные ошибки времени выполнения Java. В частности: java.lang.RuntimeException: невозможно создать экземпляр активности ComponentInfo{com.joselitope.myrecipes/com.example.myrecipes.MainActivity}: java.lang.ClassNotFoundException: не найден класс com.example.myrecipes.MainActivity на пути : DexPathList[... Исследуя решения этой ошибки, я должен обновить свою MainActivity в каком-то файле Kotlin. Странный.   -  person Jose    schedule 02.04.2021
comment
@HuthaifaMuayyad, поэтому после изменения этого файла Kotlin (например, MainActivity.kt) мое приложение смогло работать на считываемом устройстве Android. Я вернусь к своему первоначальному выпуску iOS вскоре после того, как отпраздную эту маленькую победу. Я действительно озадачен этими странными ошибками, с которыми мне приходится сталкиваться при переходе на M1. По крайней мере, это показывает, как я должен улучшить свою игру, когда дело доходит до нативной разработки для Android и iOS.   -  person Jose    schedule 02.04.2021


Ответы (2)


Я также столкнулся с этой проблемой.

Обновите версию iOS до 10.0 в подфайле.

Это сработало для меня.

person Kushal Goel    schedule 31.03.2021
comment
Спасибо за предложение. Я уже менял версию на 14.1 безрезультатно. Я также пробовал его на 10.0 по вашей рекомендации, тоже безрезультатно. Я начинаю думать, что мне, возможно, придется прокомментировать каждую из моих зависимостей, чтобы увидеть, исчезнет ли ошибка «Ошибка запуска установки модуля». - person Jose; 31.03.2021
comment
Вы раскомментировали эту строку? - person Kushal Goel; 01.04.2021
comment
еще нет. Вместо этого я стараюсь сначала запустить приложение на устройстве Android. С маршрутом я смог собрать apk, но при развертывании я получаю странные исключения во время выполнения Java, которых я никогда раньше не получал за свои 2 года разработки Flutter. Следите за обновлениями... - person Jose; 02.04.2021

Это еще не поддерживается (входит в этот PR)

Flutter отключил запуск на симуляторах, работающих на архитектуре ARM. Они сделали это, потому что во флаттер-зависимости (движок iOS Flutter.framework) не было слайсов arm64. Существует открытый запрос на добавление поддержки симулятора iOS на компьютерах Mac M1 (arm64): https://github.com/flutter/flutter/pull/85059

Сначала я пытался заставить это работать для себя, но проблема в том, что Generated.xcconfig содержит код, который отключает архитектуру arm64 для симулятора, и этот файл генерируется внутри Flutter. Как только вы измените это вручную, это все равно не удастся. Если вы попытались построить с помощью Xcode, вы можете получить это сообщение об ошибке во время процесса компоновки:

Undefined symbol: _OBJC_CLASS_$_ClassName

и многое другое. Я бы рекомендовал сборку с помощью Xcode, если вы не видите достаточно журналов или информации для отладки процесса сборки.


Automatically assigning platform не является ошибкой

Automatically assigning platform iOS на самом деле не является ошибкой, он просто сообщает вам, что по умолчанию используется платформа iOS. Затем произошел сбой, поэтому в этом случае вы должны были предоставить больше информации об ошибке.

person Ben Butterworth    schedule 24.06.2021