Flutter构建APK时遇Firebase.app及compileFlutterBuildDebug错误求助
Flutter Firebase 构建错误排查与修复
问题现象
原本可正常从Firebase获取经纬度数据,尝试构建APK后出现错误,当前模拟器无法运行应用,核心错误:
- 在
FirebaseFirestorePlatform.instanceFor(app: Firebase.app(appName))处提示找不到名为'Firebase'的getter - 最终触发构建失败:
Execution failed for task ':app:compileFlutterBuildDebug'
移除所有Firebase代码后应用恢复正常,重新添加则重复触发错误。
问题根源与修复方案
1. 修复导入语句错误
main.dart中firebase_core的导入存在多余空格,导致编译器无法正确识别Firebase类:
原错误导入:
import 'package:firebase_core/firebase_core.dart ';
修正后:
import 'package:firebase_core/firebase_core.dart';
2. 统一Firebase依赖版本
pubspec.yaml中部分Firebase依赖版本存在兼容性冲突,调整为相互兼容的版本:
修正后的pubspec.yaml依赖片段:
dependencies: flutter: sdk: flutter dio: ^4.0.0 flutter_polyline_points: ^1.0.0 google_maps_flutter: ^2.0.2 cupertino_icons: ^1.0.2 geolocator: ^9.0.2 geocoding: ^2.0.4 http: uuid: ^3.0.5 google_place: ^0.4.7 flutter_spinkit: ^5.1.0 flutter_launcher_icons: ^0.11.0 cloud_firestore: ^4.8.2 firebase_database: ^10.2.8 firebase_core: ^2.15.0 firebase_auth: ^4.6.2
3. 清理缓存并重新构建
执行以下命令清理项目缓存,确保依赖正确加载:
flutter clean flutter pub get
4. 确认Firebase初始化逻辑
main.dart中的初始化流程需保持正确顺序,确保在runApp前完成Firebase初始化:
void main() async{ WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); runApp(MyApp()); }
修正后的完整代码示例
main.dart
import 'package:firebase_core/firebase_core.dart'; import 'package:flutter/material.dart'; import 'MapScreen2.dart'; import 'SearchScreen.dart'; void main() async{ WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Google Map', debugShowCheckedModeBanner: false, theme: ThemeData( primarySwatch: Colors.blue, ), home: MainScreen(), ); } } class MainScreen extends StatefulWidget { const MainScreen({super.key}); @override State<MainScreen> createState() => _MainScreenState(); } class _MainScreenState extends State<MainScreen> { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( centerTitle: true, backgroundColor: Color.fromRGBO(26, 26, 26, 1), foregroundColor: Color.fromRGBO(230, 230, 230, 1), titleTextStyle: TextStyle( fontWeight: FontWeight.w500, fontSize: 26 ), title: const Text("Pothole Map"), ), body: Stack( children: [ SizedBox( width: double.infinity, child: Padding( padding: const EdgeInsets.all(8.0), child: Column( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Container( clipBehavior: Clip.antiAlias, decoration: BoxDecoration( color: Colors.white, ), child: Column( children: [ TextField( onTap: (){ Navigator.push(context, MaterialPageRoute(builder: (context)=>MapScreen2(), fullscreenDialog: true, ), ); }, decoration: InputDecoration( hintText: 'Map', hintStyle: TextStyle(color: Colors.white,fontWeight: FontWeight.w500, fontSize: 22), border: InputBorder.none, filled: true, fillColor: Color.fromRGBO(26, 26, 26, 1), ), autofocus: false, showCursor: false, ), SizedBox(height: 10,), TextField( onTap: (){ Navigator.push(context, MaterialPageRoute(builder: (context)=>SearchScreen(), fullscreenDialog: true, ), ); }, decoration: InputDecoration( hintText: 'Where To?', hintStyle: TextStyle(color:Color.fromRGBO(191, 191, 191, 1),fontWeight: FontWeight.w500, fontSize: 22), border: InputBorder.none, filled: true, fillColor: Color.fromRGBO(26, 26, 26, 1), ), autofocus: false, showCursor: false, ), SizedBox(height: 10,), TextField( onTap: (){ }, decoration: InputDecoration( hintText: 'Feedback', hintStyle: TextStyle(color: Color.fromRGBO(191, 191, 191, 1),fontWeight: FontWeight.w500, fontSize: 22), border: InputBorder.none, filled: true, fillColor: Color.fromRGBO(26, 26, 26, 1), ), autofocus: false, showCursor: false, ), ], ), ), ], ), ), ), ], ), ); } }
pubspec.yaml
name: new_final_app description: A new Flutter project. publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: sdk: '>=2.18.5 <3.0.0' dependencies: flutter: sdk: flutter dio: ^4.0.0 flutter_polyline_points: ^1.0.0 google_maps_flutter: ^2.0.2 cupertino_icons: ^1.0.2 geolocator: ^9.0.2 geocoding: ^2.0.4 http: uuid: ^3.0.5 google_place: ^0.4.7 flutter_spinkit: ^5.1.0 flutter_launcher_icons: ^0.11.0 cloud_firestore: ^4.8.2 firebase_database: ^10.2.8 firebase_core: ^2.15.0 firebase_auth: ^4.6.2 flutter_icons: android: true ios: true image_path: "assets/image.jpeg" dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^2.0.0 flutter: assets: - assets/pothole.png uses-material-design: true
内容的提问来源于stack exchange,提问作者Nomir Nasir
相关产品推荐
相关产品推荐

