Подпись флаттера недопустима при попытке на устройстве iOS


11

TL; DR

РЕДАКТИРОВАТЬ 2020-05-06 : Мое приложение корректно устанавливается с iOS 13.4, но через некоторое время приложение вылетает при запуске, и мне приходится переустанавливать его. Я не знаю почему. Может быть, после обновлений iOS?

Также см. Ответ ниже: https://stackoverflow.com/a/60013390/1121497

Полный вопрос

Я пытаюсь запустить новое приложение Flutter (пример приложения, созданного flutter create) на устройстве iOS (iPhone XS). Xcode удается установить его, но затем он вылетает с этим сообщением:

dyld: Library not loaded: @rpath/Flutter.framework/Flutter
  Referenced from: /private/var/containers/Bundle/Application/BA807438-FA5B-4021-B37D-FC437B2C80CA/Runner.app/Runner
  Reason: no suitable image found.  Did find:
    /private/var/containers/Bundle/Application/BA807438-FA5B-4021-B37D-FC437B2C80CA/Runner.app/Frameworks/Flutter.framework/Flutter: code signature invalid for '/private/var/containers/Bundle/Application/BA807438-FA5B-4021-B37D-FC437B2C80CA/Runner.app/Frameworks/Flutter.framework/Flutter'

Если я пытаюсь flutter run, приложение также открывается и вылетает. И команда продолжает ждать вечно:

$ flutter run
Launching lib/main.dart on Ferran Maylinch’s iPhone in debug mode...

Automatically signing iOS for device deployment using specified development team in Xcode project: 25D86TPBWG
Running Xcode build...                                                  

 ├─Assembling Flutter resources...                           4.3s
 └─Compiling, linking and signing...                        13.3s
Xcode build done.                                           21.0s
Installing and launching...                                             
(This is taking an unexpectedly long time.)

В Xcode я настроил команду (личная команда), и сертификат подписи (сертификат Apple Development) выглядит нормально, потому что я могу установить проект Hello world Swift на свое устройство.

Примечание. Я не плачу с учетной записью Apple Developer Program . Это абсолютно необходимо для запуска приложений Flutter на устройствах iOS?

Я следовал инструкциям macOS и flutter doctorсказал, что у меня есть все, что нужно для iOS:

[] Flutter (Channel stable, v1.12.13+hotfix.5, on Mac OS X 10.15.2 19C57, locale en-ES)

[!] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    ! Some Android licenses not accepted.  To resolve this, run: flutter doctor --android-licenses
[] Xcode - develop for iOS and macOS (Xcode 11.3)
[!] Android Studio (version 3.5)Flutter plugin not installed; this adds Flutter specific functionality.Dart plugin not installed; this adds Dart specific functionality.
[] IntelliJ IDEA Ultimate Edition (version 2019.3.1)
[!] VS Code (version 1.41.1)Flutter extension not installed; install from
      https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter
[] Connected device (1 available)

! Doctor found issues in 3 categories.

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

В симуляторе iOS приложение тоже отлично работает.

Недавно я заметил, что у меня нет файла ios/Podfile. Я нашел этот пост, говорящий об этом. Я не знаю, важно ли это в моем случае, но я пытался вручную добавить этот Podfile . Во всяком случае, я получаю ту же ошибку подписи.

Разочарованный этим, я переключился на NativeScript на данный момент.


Вы пытаетесь запустить его на реальном устройстве в режиме отладки или выпуска?
Sunkuu7

@SlahLayouni Это было в режиме отладки. Я пробовал режим Release, и он не работает с той же ошибкой.
Ферран Майлинч

Попробуйте сначала создать релиз, а затем запустить его из xcode как релиз. flutter build ios --release
Sunkuu7

1) Вы пробовали iOS Simulator 2) Вы развернули / запустили «Hello World» в Swift / Xcode на вашем устройстве iPhone? Персональный сертификат должен быть хорош для развертывания на вашем телефоне.
Моррисон Чанг

Ответы:


8

РЕДАКТИРОВАТЬ: это исправлено в iOS 13.4, который был выпущен 24 марта.

Это регрессия iOS 13.3.1, не связанная с Flutter. Мне удалось воспроизвести сбой без какого-либо кода Flutter или CocoaPods, создав новый проект Xcode, добавив целевой объект фреймворка и выбрав профиль обеспечения Personal Team.

См. Выпуск GitHub: https://github.com/flutter/flutter/issues/49504#issuecomment-581554697 .

Эта ошибка не должна влиять на профили подготовки группы разработчиков или приложения, которые уже подписаны и распространены в App Store.

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


Большое спасибо! Я надеюсь, что это исправлено как можно скорее!
Ферран Майлинч

Так это на уровне iOS? Я также сталкиваюсь с этой проблемой на iPhone с версией iOS 13.3.1
Adromil Balais

Да, это проблема в iOS 13.3.1 и более поздних версиях, в которых отказываются от подписанных фреймворков для профиля Personal Team. Это не относится к Флаттеру. Ссылки в комментарии GitHub ссылаются на другие проекты, и я легко смог воспроизвести его с совершенно новым фреймворком в XCode без вложения Flutter.
Дженн

Я только что попробовал сейчас с iOS 13.4, и это работает! Я мог запустить свое приложение Flutter на реальном iPhone из Xcode, а также из IntelliJ IDEA. Я думаю, что это будет работать и из командной строки.
Ферран Майлинч

4

Насколько я вижу, это проблема совместимости Flutter с iOS 13.3.1. В моем случае мое приложение отлично работает на iPhone XR с iOS 13.3, но вылетает при запуске на другом iPhone XR с iOS 13.3.1. Невозможно протестировать в симуляторе, так как это приложение для камеры, но оно работает как на физических устройствах Android, так и на эмуляторах Android.


Вы правы. Только что протестировал с моим iPad с 13.3. Мой телефон не работает с 13.3.1. Собираюсь обновить до бета 2 и попробовать :-)
Кен Хуэй

13.3.1 Публичная бета 2 имеет ту же проблему.
Кен Хуэй

3
  1. Вы согласны с лицензионным соглашением XCode? если нет, попробуйте sudo xcodebuild -license.
  2. Ваши стручки обновлены? если нет, перейдите к папке Ios в проекте флаттера в вашем терминале и типа , pod installтоpod update

Если это не сработает, перейдите в папку ios вашего проекта флаттера и откройте Runner.xcworkspace, дважды нажав на него. Это должно выглядеть так:

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

Когда xcode откроется, нажмите на Runner в левом верхнем углу.

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

Затем перейдите в раздел «Подписание и возможности» и в раскрывающемся списке «Команда» выберите поле. Если ничего не существует, создайте учетную запись.

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

Затем в «Идентификаторе пакета» должно отображаться имя пакета вашего приложения. Добавьте .app в конце. Например, если его com.example.yourapp, сделайте его com.example.yourapp.app и нажмите enter.

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


У меня нет подфайла. Я смотрю на этот пост stackoverflow.com/questions/51599686/…
Ferran Maylinch

Установите cocoapods на свой компьютер и запустите команды pod в вашем каталоге ios.
Юдхиштхир Сингх

У меня есть Cocoapods. Какие команды pod я должен использовать?
Ферран Майлинч

установка pod и затем обновление pod
Юдхиштхир Сингх

Я внес изменения в свой ответ, пожалуйста, посмотрите.
Юдхиштхир Сингх

1

Можете ли вы следовать за шагом один за другим

flutter channel master
flutter upgrade
flutter clean
flutter build ios

Я попробовал это. Также на бета-канале.
Ферран Майлинч

Ошибка связана с возможностями подписи, ветка флаттера не имеет к этому никакого отношения.
Юдхиштхир Сингх

1

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

Все, что я хочу, это предоставить более подробную информацию OP и другим участникам здесь. Так что у меня все как указано в ОП.

Вот что я попробовал:

  1. Podfile не создается (даже после запуска на Simulator и т. Д.), И поэтому я попытался включить его из примера приложения Flutter от Flutter Github.

    • Очистил каталог iOS
    • Добавлен подфайл
    • Побежал под обновлением.
    • Исправлены предупреждения (при условии отладки Pod конфигурации и выпуска к Xcode)
    • Добавлен FLUTTER_ROOT в пользовательские настройки (так как отсутствовал), и я получаю ошибку Xcode-backend.sh (точно не помню, извините)
    • построен

Итак, эти шаги производят: эта ошибка на симуляторе. Те же ошибки подписи что и без Pod на физическом устройстве

  • Удалил все сертификаты из Keychain Access и восстановил их через Xcode.

    Результат: ничего не изменилось

  • Удалены Xcode, Pod и настройки связанные с ним. Удалены сертификаты. Восстановил все после перезагрузки (свежая установка)

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

  • Я обновил Flutter до dev-канала (1.14.1) и восстановил проект, используя flutter create .

    Реран строит. С капсулами и без. Еще такой же

  • Также я попытался изменить подпись с Apple Developer на iOS Developer для всех целей (включая Pod)

    В этом у меня есть некоторые ошибки, потому что я даже пытался подписать Pods-Runner (была небольшая надежда). Но в целом ничего нового.

  • Когда я запускаю устройство на iOS 13.3.1 Beta, я обновил Target до 13.2 (максимум доступен прямо сейчас?).

    нет

  • Я включил сборку macOS и собрал приложение для Mac

    Он работает с отступом, все в порядке.

Подводить итоги:

  • Эта проблема не зависит от проекта Pod / Non-Pod.
  • Ничего не изменилось в отношении этой проблемы между последней стабильной флаттер и последней разработкой (как написано в посте)
  • Эта ошибка не исправлена ​​переустановкой XCode и не связана с сертификатами Цепочки для ключей
  • Проблема появляется только при сборке только для физического устройства iOS (iPhone X в моем случае). Симулятор (без Pod) работает хорошо.

Btw. Все работало на MacBook Pro 13 с установленной Catalina 10.15.3 и Xcode 11.3.1.

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

Снова. Прошу прощения, если я сделал что-то не так, опубликовав это, но я не хотел дублировать этот вопрос или предлагать OP отредактировать, поскольку этот пост довольно длинный.


Большое спасибо за этот ответ. Это не решение, но это очень полезно. Очевидно, что с Флаттером что-то не так. Похоже, Google не знает точно, что ожидает Apple, или Apple не заинтересована в том, чтобы позволить Flutter работать гладко ... :)
Ferran Maylinch

Кстати, вчера я попробовал Flutter на другом Mac, с Мохаве (у меня есть Каталина), и я получил ту же ошибку.
Ферран Мэйлинч

Скорее всего, это связано с CodeSign или Flutter. Мы должны открыть вопрос github.com/flutter/flutter/issues
Эмин Гулиев

Да. Хорошая идея. Дайте мне знать, если вы это сделаете, или я могу сделать это сам.
Ферран Мэйлинч

0

Попробуйте переключиться на стабильный канал через flutter channel stable, выполнить, flutter upgradeа затем перейти к проекту приложения и запуститьflutter run


К сожалению, я получаю ту же ошибку. Я даже создал новое приложение флаттера после перехода на стабильный канал. Я обновил свой вопрос, чтобы показать, что теперь я на стабильном канале.
Ферран Майлинч

Я также добавил вывод прогона флаттера.
Ферран Майлинч

0

Просто для запуска приложения в режиме отладки не требуется какой-либо платной учетной записи Apple. 1) Откройте xCode для этого проекта, выберите устройство и запустите его.

Откройте XCode этого проекта и проверьте параметры сборки, так как путь FLUTTER_ROOT указан правильно, если нет, создайте корень флаттера и укажите путь.


У меня есть правильный FLUTTER_ROOT. Это не проблема ... :(
Ферран Мэйлинч

0

Откройте Xcode и нажмите Product -> Cleanили ( CMD- Shift- K). Если это не сработало, попробуйте следующее: https://macpaw.com/how-to/clear-xcode-cache

Если это также не работает, пожалуйста, дайте мне знать.


Не работает Я понял, что у меня нет Podfile, поэтому я проверяю это: stackoverflow.com/questions/51599686/…
Ferran Maylinch

0

Вы проверили эту ссылку, которая может дать вам желаемый вывод https://github.com/flutter/flutter/issues/16507 . дайте мне знать, если это работает, может быть, это проблема подписания, этот пост даст вам представление о том, что происходит не так. Спасибо


У меня нет Podfile, поэтому я проверяю это: stackoverflow.com/questions/51599686/… Во всяком случае, я не знаю, какой Podfile мне нужен. Я создал один, но я все еще получаю ту же ошибку. Так что, возможно, мне не нужен Podfile, или, в любом случае, проблема в другом.
Ферран Майлинч

0

Хорошо, у меня есть время, чтобы создать ответ:

Основываясь на ответе Subaharan Vel , вопрос: папки Flutter Podfile и Pods не созданы в каталоге ios, а ответ предполагает, что сборка для симулятора iOS может создать подфайл в неправильном месте (он должен создаваться автоматически непосредственно в каталоге iOS. Поэтому, вероятно, ваш Podfile существует где-то там. Попробуйте найти его или просто удалите весь каталог ios, очистите проект и заново создайте его. Также убедитесь, что это не так. Создание Podfile для добавления модулей iOS перед добавлением любых плагинов Flutter никогда не подключает модули плагинов в существующий подфайл .

Удачи, надеюсь это тебе поможет


Там нет Podfileнигде. Я бегу find . -name Podfileи ничего не получаю. Я удалил iosкаталог, но теперь, как я могу восстановить его? Если я бегу, flutter build iosя получаю ошибку Application not configured for iOS.
Ферран Мэйлинч

@Ferran Maylinch Просто повторите все шаги из Surbahan Vel (первая ссылка) - он удалил каталог ios, и он был воссоздан после очистки проекта. При необходимости добавьте подфайл вручную (из stackoverflow.com/a/53492243/7183675 , удалите ненужные оттуда модули , также проверьте второй комментарий под этим ответом). В крайнем случае - может помочь, если вы добавите хотя бы один пакет в pubspec, чтобы заставить Flutter автоматически создавать Podfile. Даже если этот пакет на самом деле не используется
Адам Тухольски

0

Не идеальное решение, но следующее сработало для меня.

  1. Обновите ваше устройство до iOS 13.4 beta.
  2. Выполнить пробежку
  3. Сборка должна быть успешной.
  4. Появится сообщение « Возможно, ваша версия XCode устарела для вашей версии iOS» .
  5. Приложение будет установлено на устройстве. Примечание. Приложение не запустится автоматически после завершения процесса.
  6. Нажмите на значок установленного приложения на вашем устройстве, чтобы запустить приложение.

Хотя вы ничего не увидите в окне отладки, так как процесс завершается после выдачи ошибки. Это не идеальное решение, но определенно обходной путь, пока мы не получим следующее обновление Xcode. 

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.