Сборка Flutter iOS завершилась неудачно после обновления Flutter 1.22

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

Терминал показывает следующие ошибки, когда я пытаюсь запустить приложение в эмуляторе или на физическом устройстве. Эмулятор работает на iOS 14, а физическое устройство - на 14.0.1.

Emulator: ld: symbol(s) not found for architecture x86_64
Actual device: ld: symbol(s) not found for architecture arm64

Я также выполнил следующие команды, но все еще не работал ...

flutter clean && \
rm ios/Podfile ios/Podfile.lock pubspec.lock && \
rm -rf ios/Pods ios/Runner.xcworkspace && \ 
flutter run

Flutter Doctor:

[✓] Flutter (Channel stable, 1.22.0, on Mac OS X 10.15.7 19H2, locale en-US)
    • Flutter version 1.22.0 at /Volumes/demouser/Flutter/FlutterSDK/flutter
    • Framework revision d408d302e2 (7 days ago), 2020-09-29 11:49:17 -0700
    • Engine revision 5babba6c4d
    • Dart version 2.10.0

[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
    • Android SDK at /Users/demouserdemouser/Library/Android/sdk
    • Platform android-29, build-tools 29.0.2
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 12.0.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.0.1, Build version 12A7300
    • CocoaPods version 1.9.3

[✓] Android Studio (version 4.0)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 49.0.2
    • Dart plugin version 193.7547
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)

[✓] VS Code (version 1.49.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.14.1

[✓] Connected device (1 available)
    • AOSP on IA Emulator (mobile) • emulator-5554 • android-x86 • Android 9 (API 28) (emulator)

• No issues found!

pubspec.yaml

name: demo
description: demo
version: 1.0.0+1

environment:
  sdk: ">=2.5.2 <3.0.0"

dependencies:
  flutter:
    sdk: flutter

  cupertino_icons: ^1.0.0
  firebase_auth: ^0.18.1+1
  cloud_firestore: ^0.14.1+2
  firebase_messaging: ^6.0.16
  firebase_storage: ^5.0.0-dev.2
  firebase_core: ^0.5.0
  firebase_admob: ^0.10.0+1
  intl_translation: ^0.17.10+1
  http: ^0.12.2
  xml: ^4.5.1
  shared_preferences: ^0.5.12
  flutter_staggered_grid_view: ^0.3.0
  flutter_signin_button: ^1.0.0
  image_picker: ^0.6.7+11
  mlkit: ^0.15.1
  cached_network_image: ^2.3.2+1
  permission_handler: ^5.0.1+1
  url_launcher: ^5.7.2
  share: ^0.6.5+2
  simple_connectivity: ^0.1.1
  us_states: ^1.0.3
  cloud_functions: ^0.6.0+1
  email_validator: ^1.0.4
  package_info: ^0.4.3
  device_info: ^0.4.2+8
  expandable: ^4.1.4
  launch_review: ^2.0.0
  xml2json: ^4.4.0
  purchases_flutter: ^1.3.1

dev_dependencies:
  flutter_test:
    sdk: flutter
  flutter_launcher_icons: ^0.7.5

flutter_icons:
  image_path: "icon/new_icon.png"
  android: false
  ios: true

Вывод терминала:

> Launching lib/main.dart on physical iPhone in debug mode...
> Automatically signing iOS for device deployment using specified
> development team in Xcode project: 5ABCDEFG9 Running Xcode build...
> Xcode build done.                                           118.3s
> Failed to build iOS app Error output from Xcode build: ↳
>     2020-10-06 10:59:58.676 xcodebuild[7528:47880]  DTDeviceKit: deviceType from a578d1d6cb0d414525f7dc4c6cee was NULL
>     2020-10-06 10:59:58.778 xcodebuild[7528:47881]  DTDeviceKit: deviceType from a578d1d6cb0d414525f7dc4c6cee was NULL
>     2020-10-06 10:59:58.778 xcodebuild[7528:47881]  DTDeviceKit: deviceType from a578d1d6cb0d414525f7dc4c6cee was NULL
>     ** BUILD FAILED **
Xcode's output:
↳
    /Volumes/driveD/Flutter/FlutterSDK/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-5.7.2/ios/Classes/FLTURLLauncherPlugin.m:153:57: warning: 'keyWindow' is deprecated: first deprecated in iOS 13.0 - Should not be used for applications that support multiple scenes as it returns a key window across all connected scenes [-Wdeprecated-declarations]
                                                           .keyWindow.rootViewController];
                                                            ^
    In module 'UIKit' imported from /Volumes/driveD/projects/new/demo/ios/Pods/Target Support Files/url_launcher/url_launcher-prefix.pch:2:
    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIApplication.h:134:51: note: 'keyWindow' has been explicitly marked deprecated here
    @property(nullable, nonatomic,readonly) UIWindow *keyWindow API_DEPRECATED("Should not be used for applications that support multiple scenes as it returns a key window across all connected scenes", ios(2.0, 13.0));


   -------
 ld: symbol(s) not found for architecture arm64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    note: Using new build system
    note: Building targets in parallel
    note: Planning build
    note: Constructing build description

Could not build the precompiled application for the device.

Error launching application on physical’s iPhone.

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


person Sam    schedule 06.10.2020    source источник
comment
Не могли бы вы показать свой флаттер-доктор и содержимое файла pubspec.yaml?   -  person Nuts    schedule 06.10.2020
comment
Это также может помочь: rm -f ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings github.com/flutter/flutter/issues/51992# issuecomment-596865108   -  person Nuts    schedule 06.10.2020
comment
Спасибо за ответ, я пробовал, но после этого выдает ту же ошибку ....   -  person Sam    schedule 06.10.2020


Ответы (6)


rm -f ios / Runner.xcworkspace / xcshareddata / WorkspaceSettings.xcsettings исправил проблему для меня

person Thyreach    schedule 12.10.2020
comment
Когда я перехожу в ios / Runner.xcworkspace / xcshareddata, там нет файла WorkspaceSettings.xcsettings. Доступен только один файл - IDEWorkspaceChecks.plist. - person Sam; 12.10.2020

Здесь, в stackoverflow, есть несколько разных ответов. Если я не ошибаюсь, в прошлый раз переключение на стабильный канал решило проблему для меня.

person w461    schedule 06.10.2020
comment
Я тоже думал переключить канал, но потом понял, что уже на стабильном канале. - person Sam; 07.10.2020
comment
Я думаю, вы уже перезагрузились. Это также иногда помогает исправить (не) ошибки. Может ли это быть вызвано keyWindow, чем бы это ни было? Вы пробовали какое-нибудь другое приложение без keyWindow, работает ли оно? - person w461; 07.10.2020
comment
сейчас я игнорирую эти проблемы, поскольку они всего лишь предупреждения - person Sam; 07.10.2020

У меня есть похожий символ ошибки ld: не найден для архитектуры x86_64 clang: error: команда компоновщика завершилась неудачно с кодом выхода 1 (используйте -v, чтобы увидеть вызов) примечание: использование новой системы сборки примечание: параллельное построение целей примечание: планирование примечание по сборке: описание сборки

person Kleber Aparecido Silva    schedule 07.10.2020
comment
Получили ли вы какое-нибудь решение? - person Sam; 08.10.2020

У меня также возникли проблемы после обновления до 1.22.0, мне также пришлось обновить пакет flutterFire, и это, похоже, моя проблема.

the versions that I'm using on pubspec.yaml:

  firebase_core: ^0.5.0
  cloud_firestore: ^0.14.1+2
  firebase_auth: ^0.18.1+1
  firebase_analytics: ^5.0.0
  cloud_functions: ^0.6.0+1
  firebase_storage: ^4.0.1
  firebase_crashlytics: ^0.1.0+3 
  firebase_messaging: ^7.0.2 

при попытке запустить он говорит обновить спецификацию CocoaPods, запустив pod repo update, сделал это, но все равно получил ту же ошибку, затем запустил pod install или pod update получил ошибку  введите описание изображения здесь

попробовал команды: pod install --repo-update и pod update Firebase/Storage, но все равно получил то же сообщение об ошибке

person Rafael Honda    schedule 07.10.2020
comment
Вы нашли какое-нибудь решение? - person Sam; 10.10.2020
comment
Да, решение для меня заключалось в том, чтобы удалить podfile.lock, запустить flutter clean и запустить приложение. - person Rafael Honda; 12.10.2020
comment
Я рад, что это сработало для вас. У меня до сих пор не работает .. :-( - person Sam; 12.10.2020
comment
не уверен, что у вас проблема с flutterFire, но позже я нашел это руководство по миграции firebase.flutter.dev/docs / migration - person Rafael Honda; 14.10.2020

Просто удалите старую установленную папку Flutter, например [.cache] / [pub-cache], потому что вы, возможно, обновили версию flutter, но инструменты iOS и другие инструменты указывают на более старую версию, и это вызывает проблемы с архитектурой.

person Hardy    schedule 22.10.2020
comment
вы уверены в этом? - person ; 07.11.2020

Наконец, после множества изменений я обнаружил, что виноват пакет Purchases_flutter: ^ 1.3.1.

Когда я удаляю пакет из своего файла yaml, он начинает работать. Для этого уже обнаружена ошибка https://github.com/RevenueCat/purchases-flutter/issues/120.

Спасибо всем за ваше время и помощь.

person Sam    schedule 22.10.2020