Flutter - сборка для iOS, но встроенная интегрированная среда App.framework была создана для iOS Simulator - PullRequest
13 голосов
/ 27 марта 2020

После обновления до бета-версии Catalina 10.15.4 с бета-версией Xcode 13.4, которая также обновила Simulator до 13.4 (921.4).

Приложение правильно компилируется и работает на физически подключенном устройстве, но не имитирует какие-либо устройства. может пройти этот этап.

Я получил ошибки

Сборка для iOS, но связанная и встроенная структура App.framework была создана для iOS Simulator.

или

Сборка для iOS Симулятора, но встроенная интегрированная среда App.framework была построена для iOS.

enter image description here

Как это исправить?

Ответы [ 7 ]

43 голосов
/ 30 марта 2020

Xcode 11.4 изменил способ связывания и встраивания фреймворков, и у вас могут возникнуть проблемы с переключением между iOS устройствами и симуляторами. Flutter v1.15.3 и новее автоматически перенесет ваш проект Xcode.

Чтобы открепиться, следуйте инструкциям ниже;

  • Быстрое исправление (заставьте ваш симулятор работать)

rm -rf ios/Flutter/App.framework

  • Официально рекомендуется Шаги для переноса вручную

    1. Из каталога приложения Flutter откройте ios / Runner.xcworkspace в Xcode.
    2. На панели навигатора, найдите группу Flutter и удалите App.framework и Flutter.framework. enter image description here
    3. В настройках сборки цели Runner Фазы сборки> Связать двоичные файлы с библиотеками подтвердите, что App.framework и Flutter.framework больше не присутствуют. Также подтвердите в Фазах сборки> Вставить каркасы.

enter image description here

Измените настройки сборки цели Runner Фазы сборки> Тонкий двоичный скрипт следующим образом:

/ bin / sh "$ FLUTTER_ROOT / packages / flutter_tools / bin / xcode_backend. sh "embed

/ bin / sh" $ FLUTTER_ROOT / packages / flutter_tools / bin / xcode_backend. sh "thin

enter image description here

В цели Runner Настройки сборки> Другие флаги компоновщика

(OTHER_LDFLAGS) добавить флаттер $ (унаследованного) -рамки

enter image description here

Надеюсь, это поможет!

3 голосов
/ 29 марта 2020

Xcode 11.4 изменил способ связывания и внедрения фреймворков, что вызывает проблемы с переключением между iOS устройствами и симуляторами.

Пожалуйста, следуйте официальному руководству о том, как перенести ваш проект.

2 голосов
/ 01 апреля 2020

Обновлено до Xcode 11.4. Ios 13.4, Iphone X. Приложение просто выбирает данные с помощью API. Приложение запускалось на белом экране, а затем, наконец, вылетало, как на симуляторе, так и на устройстве.

Я следовал официальному руководству (я также rm -rf ios/Flutter/App.framework) flutter.dev / docs / development / ios -project -migration . Я запускал несколько раз flutter clean

Я также пытался удалить Pods / folder и Podfile.lock, а затем переустановить, используя pod install в папке ios.

Поскольку я использую данные asyn c, я также добавил в качестве 1-й строки в main ()

WidgetsFlutterBinding.ensureInitialized();

Не помогло, приложение не запустило ни симулятор.

Затем я удалил папки ios/ и android/. После этого в папке проекта я запустил команду flutter create ., которая регенерирует указанные папки.

После этого мое приложение нормально запускалось как на симуляторе, так и на устройстве. Я надеюсь, что это поможет другим. НОТА!! если вы сделали какие-либо изменения в этих папках вручную, пожалуйста, сделайте резервную копию или зафиксируйте заранее.

1 голос
/ 27 марта 2020

После нескольких дней, пытаясь найти решение для тестирования приложения Flutter на устройстве iOS, я наконец нашел это:

flutter clean
flutter build ios

- Откройте xCode и запустите приложение на своем устройстве.

0 голосов
/ 20 апреля 2020

В моем случае работает только симулятор (отладка). если вы хотите развернуть свое приложение в магазине приложений (выпуск), я настоятельно рекомендую вам обновить версию флаттера, используя

flutter version v1.15.17

, иначе вы столкнетесь с зависшим приложением с белым экраном.

просто обновите версия флаттера, тогда все работает хорошо

0 голосов
/ 15 апреля 2020

Ручное обновление флаттера до версии 1.15 также решает эту проблему. Мне помог запуск flutter version v1.15.17.

Кроме того, вы можете переключиться на каналы beta или dev, введя команду flutter channel, но убедитесь, что вы проверяете свой код на предмет всех изменений B C ...

0 голосов
/ 08 апреля 2020

Я попробовал решение на официальном сайте флаттера, но оно не сработало для меня, поэтому я нашел временное решение, которое сработало для меня, но мне потребовались некоторые тяжелые работы: Вот мой пример с проектом stuck_framework, который это новый * fre2310 * проект (первый запуск на симуляторе)

  1. Я создал 2 папки внутри проекта флаттера с именами
    "ios_simulator" и "ios_real_device". введите описание изображения здесь

  2. Теперь моя первая сборка была для симулятора, затем я хочу переключиться на реальное устройство, я перемещу папку ios внутри Flutter проект для "ios_simulator"

  3. Я открываю проект с помощью кода Visual Studio и запускаю "flutter create". и теперь я выберу реальное устройство для перестройки проекта (если ваш симулятор онлайн, пожалуйста, выйдите). введите описание изображения здесь
  4. Теперь жду финала сборки sh и запускаюсь на реальном устройстве без ошибок. Теперь у меня есть 2 ios проект 1 для симуляторов и один для реальных устройств.
  5. В следующий раз, когда я захочу снова запустить симулятор, я просто удаляю текущую папку ios и копирую ios папка, которую я поместил на "ios_simulator", вернулась в папку проекта. Надеюсь, что эта помощь
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...