iOS 上的 Flutter:模块 'Firebase' 的重新定义
Flutter on iOS: redefinition of module 'Firebase'
我一直在尝试在 iOS 上构建我的 flutter 应用程序,但 flutter run
抛出以下错误:
/Users/<MyUser>/Desktop/projects/app/ios/Pods/Firebase/CoreOnly/Source
s/module.modulemap:1:8: error: redefinition of module 'Firebase'
module Firebase {
^
/Users/<MyUser>/Library/Developer/Xcode/DerivedData/Runner-dbkgurnsasbvieahfnk
dontejqss/SourcePackages/checkouts/firebase-ios-sdk/CoreOnly/Sources/module.
modulemap:1:8: note: previously defined here
module Firebase {
我已经按照说明 here 导入了 firebase-ios-sdk。导入的模块是 FirebaseCore、FirebaseAuth 和 FirebaseMessaging。除了在 AppDelegate.swift 文件中导入 Firebase 之外,我没有对 iOS 特定代码(/ios 下的任何内容)进行任何修改。更新后的文件现在包含以下代码:
import UIKit
import Flutter
import Firebase
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
FirebaseApp.configure()
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}
搜索错误后,我尝试了以下步骤:
flutter clean
pod deintegrate
和 pod install
- 清理 DerivedData(通过 XCode 和手动)
- 删除并重新添加 firebase-ios-sdk
但是没有用。
如果您使用 M1 试试这个
arch -x86_64 pod install
我已经设法通过完全删除 firebase-ios-sdk 依赖项来解决这个问题。看来这是Flutter依赖引入的,手动添加导致重定义错误
我建议遇到此错误或类似错误的任何人确保他们遵循的集成步骤适用于 Flutter 而不是 iOS(仅限)。
正如 Wouter Pol 所建议的,如果您按照许多配置指南并为 Firebase 进行了一些 iOS-specific (non-Flutter) 设置,则很可能会发生此错误。
我不得不撤消两个更改:
1 - 从 AppDelegate.swift
中删除添加的代码
它应该是这样的 - 没有 import Firebase
也没有 FirebaseApp.configure()
2 - 没有包依赖性
我之前添加了 Firebase 包,但是当我已经用适当的包配置了 Flutter 时我不需要它。
Runner > Swift Packages
应该是这样的:
我一直在尝试在 iOS 上构建我的 flutter 应用程序,但 flutter run
抛出以下错误:
/Users/<MyUser>/Desktop/projects/app/ios/Pods/Firebase/CoreOnly/Source
s/module.modulemap:1:8: error: redefinition of module 'Firebase'
module Firebase {
^
/Users/<MyUser>/Library/Developer/Xcode/DerivedData/Runner-dbkgurnsasbvieahfnk
dontejqss/SourcePackages/checkouts/firebase-ios-sdk/CoreOnly/Sources/module.
modulemap:1:8: note: previously defined here
module Firebase {
我已经按照说明 here 导入了 firebase-ios-sdk。导入的模块是 FirebaseCore、FirebaseAuth 和 FirebaseMessaging。除了在 AppDelegate.swift 文件中导入 Firebase 之外,我没有对 iOS 特定代码(/ios 下的任何内容)进行任何修改。更新后的文件现在包含以下代码:
import UIKit
import Flutter
import Firebase
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
FirebaseApp.configure()
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}
搜索错误后,我尝试了以下步骤:
flutter clean
pod deintegrate
和pod install
- 清理 DerivedData(通过 XCode 和手动)
- 删除并重新添加 firebase-ios-sdk
但是没有用。
如果您使用 M1 试试这个
arch -x86_64 pod install
我已经设法通过完全删除 firebase-ios-sdk 依赖项来解决这个问题。看来这是Flutter依赖引入的,手动添加导致重定义错误
我建议遇到此错误或类似错误的任何人确保他们遵循的集成步骤适用于 Flutter 而不是 iOS(仅限)。
正如 Wouter Pol 所建议的,如果您按照许多配置指南并为 Firebase 进行了一些 iOS-specific (non-Flutter) 设置,则很可能会发生此错误。
我不得不撤消两个更改:
1 - 从 AppDelegate.swift
中删除添加的代码它应该是这样的 - 没有 import Firebase
也没有 FirebaseApp.configure()
2 - 没有包依赖性
我之前添加了 Firebase 包,但是当我已经用适当的包配置了 Flutter 时我不需要它。
Runner > Swift Packages
应该是这样的: