Flutter接入Firebase后Windows/Android构建失败求助
Flutter接入Firebase后Windows与Android构建失败问题
问题概述
接入Firebase并完成配置后,执行flutter run -d windows -v时构建失败。已尝试flutter pub clean、flutter pub cache clean、flutter pub get、重装Flutter及Windows系统,问题仍未解决。接入Firebase前应用可正常运行,且队友Windows设备上Android和Windows版本均可正常构建。
Windows端报错信息
Gradle构建错误
[ +2 ms] Exception: Gradle task assembleDebug failed with exit code 1 [ +5 ms] "flutter run" took 2,450,242ms. [ +4 ms] #1 RunCommand.runCommand (package:flutter_tools/src/commands/run.dart:757:9) <asynchronous suspension> #2 FlutterCommand.run.<anonymous closure> (package:flutter_tools/src/runner/flutter_command.dart:1336:27) <asynchronous suspension> #3 AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19) <asynchronous suspension> #4 CommandRunner.runCommand (package:args/command_runner.dart:212:13) <asynchronous suspension> #5 FlutterCommandRunner.runCommand.<anonymous closure> (package:flutter_tools/src/runner/flutter_command_runner.dart:296:9) <asynchronous suspension> #6 AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19) <asynchronous suspension> #7 FlutterCommandRunner.runCommand (package:flutter_tools/src/runner/flutter_command_runner.dart:244:5) <asynchronous suspension> #8 run.<anonymous closure>.<anonymous closure> (package:flutter_tools/runner.dart:91:9) <asynchronous suspension> #9 AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19) <asynchronous suspension> #10 main (package:flutter_tools/executable.dart:91:3) <asynchronous suspension>
CMake相关错误
[ +85 ms] CMake Error at flutter/ephemeral/.plugin_symlinks/firebase_core/windows/CMakeLists.txt:90 (add_subdirectory): [ +23 ms] The source directory [ +3 ms] <path-to-app>/build/windows/extracted/firebase_cpp_sdk [ ] does not contain a CMakeLists.txt file. [ ] CMake Error at flutter/ephemeral/.plugin_symlinks/firebase_core/windows/CMakeLists.txt:95 (get_target_property): [ +5 ms] get_target_property() called with non-existent target "firebase_app". [ ] CMake Error at flutter/ephemeral/.plugin_symlinks/firebase_core/windows/CMakeLists.txt:96 (string): [ ] string sub-command REPLACE requires at least four arguments. [ ] CMake Error at flutter/ephemeral/.plugin_symlinks/firebase_core/windows/CMakeLists.txt:97 (set_target_properties): [ ] set_target_properties Can not find target to add properties to: [ +9 ms] firebase_app [ +127 ms] CMake Error at flutter/ephemeral/.plugin_symlinks/firebase_core/windows/CMakeLists.txt:95 (get_target_property): [ +78 ms] get_target_property() called with non-existent target "firebase_auth". [ +98 ms] CMake Error at flutter/ephemeral/.plugin_symlinks/firebase_core/windows/CMakeLists.txt:96 (string): [ +60 ms] string sub-command REPLACE requires at least four arguments. [ +167 ms] CMake Error at flutter/ephemeral/.plugin_symlinks/firebase_core/windows/CMakeLists.txt:97 (set_target_properties): [ +147 ms] set_target_properties Can not find target to add properties to: [ +183 ms] firebase_auth [ +265 ms] CMake Error at flutter/ephemeral/.plugin_symlinks/firebase_core/windows/CMakeLists.txt:95 (get_target_property): [ +1 ms] get_target_property() called with non-existent target [ +55 ms] "firebase_remote_config". [ +96 ms] CMake Error at flutter/ephemeral/.plugin_symlinks/firebase_core/windows/CMakeLists.txt:96 (string): [ +107 ms] string sub-command REPLACE requires at least four arguments. [ +158 ms] CMake Error at flutter/ephemeral/.plugin_symlinks/firebase_core/windows/CMakeLists.txt:97 (set_target_properties): [ +126 ms] set_target_properties Can not find target to add properties to: [ +23 ms] firebase_remote_config
Android端报错信息
FAILURE: Build failed with an exception. [ ] * What went wrong: [ ] Execution failed for task ':flutter_libserialport:buildCMakeDebug[arm64-v8a]'. [ ] > com.android.ide.common.process.ProcessException: ninja: Entering directory `C:\Users\--\AppData\Local\Pub\Cache\hosted\pub.dev\flutter_libserialport-0.3.0\android\.cxx\Debug\406q6x2e\arm64-v8a'[ ] [1/5] Building C object CMakeFiles/serialport.dir/6c4fe2c82c5e28a6a42e1fa64dbeef9a/third_party/libserialport/linux_termios.c.o [ ] FAILED: CMakeFiles/serialport.dir/6c4fe2c82c5e28a6a42e1fa64dbeef9a/third_party/libserialport/linux_termios.c.o [ +1 ms] <path-to-sdk>\ndk\23.1.7779620\toolchains\llvm\prebuilt\windows-x86_64\bin\clang.exe --target=aarch64-none-linux-android21 --sysroot=<path-to-sdk>/ndk/23.1.7779620/toolchains/llvm/prebuilt/windows-x86_64/sysroot -DLIBSERIALPORT_ATBUILD -Dserialport_EXPORTS -IC:/Users/--/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_libserialport-0.3.0/android/libserialport -IC:/Users/--/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_libserialport-0.3.0/android/libserialport/../../third_party/libserialport -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fexceptions -g -fno-limit-debug-info -fPIC -std=c99 -Wall -Wextra -pedantic -Wmissing-prototypes -Wshadow -MD -MT CMakeFiles/serialport.dir/6c4fe2c82c5e28a6a42e1fa64dbeef9a/third_party/libserialport/linux_termios.c.o -MF CMakeFiles\serialport.dir\6c4fe2c82c5e28a6a42e1fa64dbeef9a\third_party\libserialport\linux_termios.c.o.d -o CMakeFiles/serialport.dir/6c4fe2c82c5e28a6a42e1fa64dbeef9a/third_party/libserialport/linux_termios.c.o -c C:/Users/--/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_libserialport-0.3.0/third_party/libserialport/linux_termios.c [ +2 ms] C:/Users/--/AppData/Local/Pub/Cache/hosted/pub.dev/flutter_libserialport-0.3.0/third_party/libserialport/linux_termios.c:98:9: error: invalid application of 'sizeof' to an incomplete type 'struct termiox'
补充信息
flutter doctor结果无异常- 接入Firebase前应用运行正常
- 队友Windows设备可正常构建Android和Windows版本
解决方案
Windows端CMake问题解决
- 手动下载Firebase C++ SDK
- 下载与
firebase_core插件版本匹配的Firebase C++ SDK,解压到项目build/windows/extracted/firebase_cpp_sdk目录,确保目录下存在CMakeLists.txt
- 下载与
- 清除构建缓存
- 删除项目的
build/windows目录,重新执行flutter run -d windows
- 删除项目的
- 同步插件版本
- 确保
pubspec.yaml中Firebase相关插件版本与队友一致,示例:firebase_core: ^2.15.0 firebase_auth: ^4.9.0 firebase_remote_config: ^4.3.0 - 执行
flutter pub get重新拉取依赖
- 确保
Android端libserialport问题解决
- 升级插件版本
- 将
pubspec.yaml中的flutter_libserialport升级到最新稳定版(如0.4.0+),旧版本存在NDK编译兼容问题
- 将
- 指定兼容NDK版本
- 在
android/app/build.gradle中设置兼容的NDK版本,示例:android { ndkVersion "25.2.9519653" }
- 在
- 手动补全头文件定义
- 若不升级插件,可修改
flutter_libserialport的linux_termios.c文件,添加以下代码:#ifdef __ANDROID__ struct termiox { unsigned short x_hflag; unsigned short x_cflag; unsigned short x_rflag; unsigned short x_sflag; unsigned char x_cc[16]; }; #endif
- 若不升级插件,可修改
内容的提问来源于stack exchange,提问作者Mohamadamin
相关产品推荐
相关产品推荐

