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

13

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

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

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

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

или

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

введите описание изображения здесь

Как я могу это исправить?

gordonturibamwe
источник

Ответы:

42

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. введите описание изображения здесь
    3. В настройках целевой сборки Runner Фазы сборки> Связать двоичные файлы с библиотеками подтвердите, что App.framework и Flutter.framework больше не присутствуют. Также подтвердите в Фазах Постройки> Вставить Структуры.

введите описание изображения здесь

  1. Измените параметры сборки цели Runner Build Phases> Thin Binary script следующим образом:

    / bin / sh "$ FLUTTER_ROOT / packages / flutter_tools / bin / xcode_backend.sh" вставлять

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

введите описание изображения здесь

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

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

введите описание изображения здесь

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

Лоик Фонкам
источник
Вопрос был недавно закрыт и получил много отрицательных отзывов, потому что он неясен и был размещен на Meta . Похоже, вы понимаете, о чем он спрашивает, есть ли у вас представление о том, как отредактировать его в форме, чтобы это не было так неясно?
CertainPerformance
1
Работает как шарм!
Гедрюс Шликас
3

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

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

Виктор К
источник
После официального руководства мое приложение по-прежнему не загружалось на моем физическом устройстве. Только после того, как вы следовали руководству, flutter cleanнесколько раз запускали , удаляли Pods/папку, а Podfile.lockзатем переустанавливали, используя pod installв папке ios, это наконец работало.
Мэтью Лернер
2

Обновлено до 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.

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

WidgetsFlutterBinding.ensureInitialized();

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

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

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

user12657834
источник
1

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

flutter clean
flutter build ios

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

gordonturibamwe
источник
Все еще не работает для меня. делает то же самое, когда я пытаюсь запуститьflutter build ios
Raymond Ativie
3
Перейдите по
gordonturibamwe
да, вот что я в итоге сделал спасибо
Рэймонд Ативи
0

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

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

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

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

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

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

Джонни Вьетнам
источник
0

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

flutter version v1.15.17

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

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

КИМ
источник
1.15.17еще не на Стабильном канале.
Loolooii