#ios #flutter #ios-simulator #apple-m1
Вопрос:
Есть ли проблема с приложениями Flutter iOS на симуляторе iOS (iPhone 12 Pro Max), работающем на Mac M1 с Big Sur 11.2.2 и Flutter 1.22.6 ?
Видите ли, мое приложение для iOS Flutter (с использованием нескольких плагинов 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 «доктор флаттера» работает успешно, и я могу создать приложение для тестирования Флаттера и запустить его на симуляторе 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
Вся помощь / предложения очень ценятся.
Комментарии:
1. Вы пробовали запустить его на физическом устройстве? ошибка, которая произошла до сих пор, находится на уровне сборки и все еще не достигла проблем с рендерингом или M1, если таковые имеются.
2. @HuthaifaMuayyad, я не пробовал запускать его на физическом устройстве на M1. Я попробовал запустить его на физическом устройстве, как iOS, так и Android, на компьютере Mac на базе Intel под управлением Catalina, и он отлично работает. Я попробую это сделать на M1, как только найду свой iPhone. Что касается устройств Android, мой VSCODE, похоже, не распознает устройство, что является еще одной проблемой, которую я должен решить.
3. Вы загрузили SDK для Android, даже если вы находитесь на Mac, SDK необходим, потому что он содержит менеджер ADB, необходимый для отладки Android. Вчера я столкнулся с проблемой на bigSur, но не на M1, симулятор не поддерживал запуск сборки выпуска. Вы запустили установку модуля из папки iOS? Не только папка родительского проекта? попробуйте установить компакт-диск в ios или
ios/runner
.4. Спасибо, Хутальфа. Сейчас я загружаю Android Studio, чтобы запустить ее на устройстве Android, чтобы посмотреть, будет ли это возможно.
5. Всегда пожалуйста, держите нас в курсе, я лично заинтересован. Кроме того, если проблема связана с зависимостью, установка модуля обязательно будет раздражать вас этим, но похоже, что в вашей среде происходит что-то еще, что еще не достигло этого уровня
Ответ №1:
Я тоже столкнулся с этой проблемой.
Обновите версию iOS до 10.0 в подфайле.
Это сработало для меня.
Комментарии:
1. спасибо вам за предложение. Я уже изменил версию на 14.1, но безрезультатно. Я также попробовал его до 10.0 в соответствии с вашей рекомендацией, но также безрезультатно. Я начинаю думать, что мне, возможно, придется прокомментировать каждую из моих зависимостей, чтобы увидеть, исчезнет ли проклятая ошибка «Ошибка при установке модуля».
2. Вы откомментировали эту строку ?
3. ещё нет. Вместо этого я иду по пути, пытаясь сначала запустить приложение на устройстве Android. С помощью маршрута я смог создать apk, но при развертывании я получаю странные исключения во время выполнения java, которых я никогда раньше не получал за 2 года разработки Flutter. Оставайтесь с нами…
Ответ №2:
Это еще не поддерживается (появится в этом PR)
Flutter отключил работу на симуляторах, работающих на архитектуре ARM. Они сделали это, потому что зависимость от flutter (движок 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. Затем он потерпел неудачу, поэтому в этом случае вам следовало предоставить больше информации об ошибке.