我使用命令
Flutter
创建了一个新的 flutter create test9_firebase_setup -a kotlin --platforms android
应用程序。目标是连接到 Firebase,并进行身份验证、分析和崩溃处理。
在我的
pubspec.yaml
中,我添加了:
dependencies:
# ...
firebase_core: ^2.17.0
firebase_analytics: ^10.5.1
firebase_crashlytics: ^3.3.7
firebase_auth: ^4.10.1
我的 main() 函数看起来像这样。 Firebase 初始化后,我们匿名登录只是为了检查它是否有效。验证结果打印在控制台中。 然后我们启动 Crashlytics 并在 Analytics 中记录一个条目。这些片段直接来自文档,所以它们应该可以工作。
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
final user = await FirebaseAuth.instance.signInAnonymously();
print(
user.user?.isAnonymous == true ? 'You are signed in' : 'Can\'t sign in',
);
FlutterError.onError = (errorDetails) {
FirebaseCrashlytics.instance.recordFlutterFatalError(errorDetails);
};
PlatformDispatcher.instance.onError = (error, stack) {
FirebaseCrashlytics.instance.recordError(error, stack, fatal: true);
return true;
};
await FirebaseAnalytics.instance.logBeginCheckout(
value: 10.0,
currency: 'USD',
items: [
AnalyticsEventItem(
itemName: 'Socks',
itemId: 'xjw73ndnw',
price: 10.0,
),
],
coupon: '10PERCENTOFF',
);
runApp(const MyApp());
}
我在我的 Firebase 控制台中启用了身份验证、Crashlytics 和 Analytics。然后我就跑了
flutterfire configure
。这就创建了 firebase_options.dart
和 google-services.json
。
我想指出的是,在控制台中配置android应用程序期间,我跳过了firebase给出的SDK指令,因为(正如我从我遵循的一些第三方教程中了解到的)这些步骤应该由
自动完成flutterfire configure
。因此我此时没有对build.gradle
进行任何手动修改。
当我运行我的应用程序时,我可以在控制台中看到
You are signed in
行。事实上,我可以在网络上的控制台中看到一个新的匿名用户。这意味着与 Firebase 的连接有效。
我在网上看到了一些教程和文章,人们正在运行
flutterfire configure
并且一切正常。但显然不适合我,因为我在控制台中收到 Missing google_app_id. Firebase Analytics disabled
错误。
我尝试在 UI 中触发异常,但 Crashlytics 仪表板没有显示任何内容。
然后我手动更新了我的 build.gradle 文件。我在应用程序级别
build.gradle
文件中添加了以下几行:
dependencies {
implementation(platform("com.google.firebase:firebase-bom:32.3.1"))
implementation("com.google.firebase:firebase-analytics-ktx")
implementation("com.google.firebase:firebase-auth-ktx")
}
现在,crashlytics 似乎正在工作,但我仍然收到
Missing google_app_id. Firebase Analytics disabled.
错误。事实上,我的 Firebase 控制台上的“实时分析”和“分析仪表板”页面没有显示任何活动。
我回到了 Firebase 在项目设置过程中给出的 SDK 说明,并尝试手动执行它们。我的项目是用 kotlin 设置的,他们告诉我寻找
build.gradle.kts
文件。但我只有 build.gradle
文件。无论如何我都试过了:
plugins {}
,因此我尝试添加此内容,但随后出现错误 Plugin [id: 'com.google.gms.google-services', version: '4.4.0', apply: false] was not found in any of the following sources: [...]
dependencies
部分已填写(如上所述)并且正在运行。plugins {
id "com.android.application"
id "kotlin-android"
id "dev.flutter.flutter-gradle-plugin"
// Add this:
id "com.google.gms.google-services"
}
那么,3个问题:
build.gradle
文件而不是 build.gradle.kts
文件,即使我的 flutter 项目是使用 kotlin 设置的?flutterfire configure
自动更新 build.gradle
并添加所需的依赖项吗?谢谢!
我也遇到了同样的问题。
这个答案对我有帮助: https://stackoverflow.com/a/77168724
我只需要升级我的 Gradle 依赖项
来自:classpath 'com.android.tools.build:gradle:7.3.1'
致:classpath 'com.android.tools.build:gradle:7.4.2'
如果您使用 Flutterfire 配置新的 Firebase 项目,则需要执行以下几项操作来处理此问题:
android/app/build.gradle
,请遵循 Firebase Analytics 的配置。plugins {
id "com.android.application"
id "kotlin-android"
id "dev.flutter.flutter-gradle-plugin"
id "com.google.gms.google-services" // add this line
}
dependencies {
// Import the Firebase BoM
implementation platform('com.google.firebase:firebase-bom:32.7.0')
// TODO: Add the dependencies for Firebase products you want to use
// When using the BoM, don't specify versions in Firebase dependencies
implementation 'com.google.firebase:firebase-analytics'
}
android/build.gradle
buildscript {
// TODO: you may need to update the kotlin_version
ext.kotlin_version = '1.9.22'
repositories {
google()
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// TODO: you may need to update the gms_version
classpath 'com.google.gms:google-services:4.4.0'
}
}
android/settings.gradle
plugins {
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
// TODO: you may need to update this plugin version if you are using a newer Flutter version.
id "com.android.application" version "7.4.2" apply false
}