Flutter Firebase项目在iPhone14 Pro运行时Xcode报leveldb未定义符号错误
问题
我有一个集成Firebase的Flutter移动应用,此前运行正常。如今每次在iPhone 14 Pro真机上执行flutter run命令时,都会出现以下Xcode错误:
Could not build the precompiled application for the device. Error (Xcode): Undefined symbol: leveldb::WriteBatch::Put(leveldb::Slice const&, leveldb::Slice const&) Error (Xcode): Undefined symbol: leveldb::WriteBatch::Delete(leveldb::Slice const&) Error (Xcode): Undefined symbol: leveldb::WriteBatch::WriteBatch() Error (Xcode): Undefined symbol: leveldb::WriteBatch::~WriteBatch() Error (Xcode): Undefined symbol: leveldb::DB::Open(leveldb::Options const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, leveldb::DB**) Error (Xcode): Undefined symbol: leveldb::Status::Status(leveldb::Status::Code, leveldb::Slice const&, leveldb::Slice const&) Error (Xcode): Undefined symbol: leveldb::Options::Options() Error (Xcode): Undefined symbol: leveldb::Status::ToString() const
以下是我的pubspec.yaml文件内容:
version: 1.1.1+18 publish_to: none environment: sdk: '>=2.18.6 <3.0.0' flutter: 3.3.8 dependencies: android_id: ^0.1.3+1 badges: ^2.0.3 cached_network_image: ^3.2.3 carousel_slider: ^4.2.0 cloud_firestore: ^4.2.0 cloud_functions: ^4.0.6 connectivity_plus: ^3.0.2 device_info_plus: ^8.0.0 dotted_border: ^2.0.0+3 firebase_app_check: ^0.1.1+6 firebase_auth: ^4.1.5 firebase_core: ^2.3.0 firebase_dynamic_links: ^5.0.8 firebase_messaging: ^14.1.4 firebase_remote_config: ^3.0.7 firebase_storage: ^11.0.7 firebase_ui_firestore: ^1.1.1 flash: ^2.0.5 flutter: sdk: flutter flutter_dotenv: ^5.0.2 flutter_facebook_auth: 4.4.1 flutter_hooks: ^0.18.5+1 flutter_image_compress: ^1.1.3 flutter_launcher_icons: ^0.11.0 flutter_local_notifications: ^13.0.0 flutter_localizations: sdk: flutter flutter_slidable: ^2.0.0 flutter_svg: ^1.1.6 geocoding: ^2.0.5 geolocator: ^9.0.2 google_fonts: ^3.0.1 google_sign_in: ^5.4.2 hooks_riverpod: ^2.1.1 http: ^0.13.5 image_cropper: ^3.0.1 image_picker: ^0.8.6 intl: ^0.17.0 linkable: ^3.0.1 material_design_icons_flutter: ^6.0.7096 open_mail_app: ^0.4.5 package_info_plus: ^3.0.2 path_provider: ^2.0.11 pattern_formatter: ^2.0.0 permission_handler: ^10.2.0 photo_view: ^0.14.0 purchases_flutter: ^4.5.0 rate_my_app: ^1.1.3 share_plus: ^6.3.0 shared_preferences: ^2.0.15 shimmer: ^2.0.0 store_redirect: ^2.0.1 timeago: ^3.3.0 tuple: ^2.0.1 url_launcher: ^6.1.7 uuid: ^3.0.7 webview_flutter: ^4.0.0 dev_dependencies: flutter_test: sdk: flutter mocktail: ^0.3.0 very_good_analysis: ^3.1.0 flutter: uses-material-design: true generate: true assets: - assets/envs/ - assets/email_icons/ - assets/flags/ - assets/images/ - assets/json/ - assets/social_icons/
解决方法
这些错误源于Xcode无法找到leveldb库的相关符号,多由依赖版本冲突、缓存残留或Xcode配置异常导致,可按以下步骤逐一排查:
清理Flutter与Xcode缓存
- 执行命令清理Flutter缓存:
flutter clean rm -rf pubspec.lock flutter pub get - 进入iOS目录清理Xcode缓存:
cd ios rm -rf Podfile.lock Pods .symlinks Flutter/Flutter.framework pod deintegrate pod setup pod install
- 执行命令清理Flutter缓存:
统一Firebase依赖版本
当前Flutter版本为3.3.8,部分Firebase依赖版本可能存在兼容性问题。建议将所有Firebase相关依赖升级到适配该Flutter版本的稳定版,比如:firebase_core升级至^2.15.0cloud_firestore升级至^4.8.0
确保所有Firebase依赖版本同步,避免版本不一致引发的链接错误。
调整Xcode构建配置
- 打开iOS项目的
Runner.xcworkspace - 在
Build Settings中找到Other Linker Flags,添加-lleveldb - 检查
Build Phases->Link Binary With Libraries中是否包含leveldb.framework,若缺失则从Pods目录手动添加
- 打开iOS项目的
确认架构设置
在Xcode的Build Settings中,将Architectures设置为Standard Architectures (arm64, x86_64),Release模式下取消勾选Build Active Architecture Only升级Flutter与Xcode版本
当前使用的Flutter 3.3.8版本较旧,建议升级至最新稳定版(如3.13.x系列);同时确保Xcode版本在14.0以上,以适配iPhone 14 Pro的硬件架构。
内容的提问来源于stack exchange,提问作者Aimn Blbol
相关产品推荐
相关产品推荐

