#swift #xcode #flutter #dart
#swift #xcode #flutter #дротик
Вопрос:
Я обновил свой flutter до последней версии 1.20, а также выполнил шаги для поддержки Xcode 11.4. После выполнения этих шагов появляются следующие ошибки, связанные с архитектурой.
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_FIRAnalytics", referenced from:
objc-class-ref in firebase_analytics(FLTFirebaseAnalyticsPlugin.o)
(maybe you meant: _OBJC_CLASS_$_FIRAnalyticsConfiguration)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
- Доктор флаттера:
[✓] Flutter (Channel stable, 1.20.0, on Mac OS X 10.15.6 19G73, locale en-US)
[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
[✓] Xcode - develop for iOS and macOS (Xcode 11.5)
[✓] Android Studio (version 3.6)
[✓] IntelliJ IDEA Community Edition (version 2019.2.2)
[✓] Connected device (2 available)
• No issues found!
Кроме того, я использую последнюю версию firebase_analytics: ^ 6.0.0 в моем pubspec.yaml.
- Подфайл iOS:
platform :ios, '9.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
project 'Runner', {
'Debug' => :debug,
'Profile' => :release,
'Release' => :release,
}
def flutter_root
generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
unless File.exist?(generated_xcode_build_settings_path)
raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
end
File.foreach(generated_xcode_build_settings_path) do |line|
matches = line.match(/FLUTTER_ROOT=(.*)/)
return matches[1].strip if matches
end
raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
end
require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
flutter_ios_podfile_setup
target 'Runner' do
use_frameworks!
use_modular_headers!
pod 'Firebase/Core'
pod 'NVActivityIndicatorView', '~> 4.8.0'
pod 'SwiftyUserDefaults', '~> 3.0.0'
pod 'RSMasterTableView', :git => 'https://github.com/DhavalRKansara/RSMasterTableView.git'
pod 'CryptoSwift'
pod 'SwiftR' , :git => 'https://github.com/DhavalRKansara/SwiftR.git'
pod 'SKPhotoBrowser'
pod 'RSSelectionMenu'
pod 'JJFloatingActionButton'
pod 'MaterialComponents/TextFields'
pod 'MarqueeLabel'
pod 'Firebase/Analytics'
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
end
post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
end
end
Примечание: я также поднял и проблему с flutterfire на GitHub для того же.
Ответ №1:
Ваш проект Xcode нацелен на x86_64, который предназначен для macOS. Вам нужно будет либо выполнить откат до arm64, либо вы можете запустить эту команду, чтобы воссоздать проект iOS по умолчанию (сначала обязательно создайте резервную копию проекта flutter): (Запускайте эту команду, только если у вас нет каких-либо изменений, внесенных специально в проект xcode, таких как ресурсы или значки)
flutter create -i swift .
или для objective-c:
flutter create -i objc .
Если вам действительно нужно разрабатывать для macOS, вам нужно будет создать отдельную папку macos в проекте flutter (https://flutter.dev/desktop).
Выполните эти команды:
flutter channel dev
Для переключения на альфа-канал (macOS все еще нестабилен для flutter)
flutter upgrade
flutter config --enable-macos-desktop
Затем перезагрузите IDE и запустите эту команду, если вы не видите папку macos в своем проекте flutter:
flutter create .
Это добавит / восстановит все отсутствующие файлы (сначала убедитесь, что вы создали резервную копию своего проекта).
Затем просто запустите эту команду для развертывания для macos:
flutter run -d macos --release