我使用flutter create test9_firebase_setup -a kotlin --platforms android
命令创建了一个新的Flutter
应用程序。我们的目标是连接到firebase与auth,分析和crashlytics工作。
在我的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并在分析中记录一个条目。这些片段是直接从医生那里来的,所以应该有用。
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和分析。然后运行flutterfire configure
。这就产生了firebase_options.dart
和google-services.json
。
我想指出的是,在控制台中配置android应用时,我跳过了firebase给出的SDK指令,因为(根据我遵循的一些第三方教程的理解)这些步骤应该由flutterfire configure
自动完成。因此,我没有做任何手动修改build.gradle
在这一点上。
当我运行我的应用程序时,我可以在控制台中看到You are signed in
行。实际上,我可以在Web上的控制台中看到一个新的匿名用户。这意味着与Firebase的连接可以正常工作。
我在网上看到了一些教程和文章,人们正在运行flutterfire configure
,一切都在工作。但显然对我来说不是,因为我在控制台中得到了Missing google_app_id. Firebase Analytics disabled
错误。
我尝试在UI中触发异常,但Crashlytics Jmeter 板没有显示任何内容。
然后我手动更新了我的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控制台上的“实时分析”和“分析 Jmeter 板”页面没有显示任何活动。
在项目设置过程中,我回到了Firebase提供的SDK Instructions,并尝试手动完成它们。我的项目是用Kotlin设置的,他们告诉我找一个build.gradle.kts
文件。但我只有build.gradle
文件。无论如何,我试过了:
- 在我的根级别buildgradle文件中没有任何
plugins {}
,所以我尝试添加它,但随后我得到错误Plugin [id: 'com.google.gms.google-services', version: '4.4.0', apply: false] was not found in any of the following sources: [...]
- 如果我在我的应用程序级build.gradle文件中添加下面的行,也会得到同样的错误。
dependencies
部分已经填写(如上所述)并正在工作。
plugins {
id "com.android.application"
id "kotlin-android"
id "dev.flutter.flutter-gradle-plugin"
// Add this:
id "com.google.gms.google-services"
}
所以,三个问题:
- 为什么我有
build.gradle
文件而不是build.gradle.kts
文件,即使我的flutter项目是用Kotlin设置的? flutterfire configure
不应该自动更新build.gradle
并添加所需的依赖项吗?- 有人能推荐启用Google Analytics的步骤吗?
谢谢你,谢谢
1条答案
按热度按时间ar5n3qh51#
我也面临着同样的问题。
这个答案帮助了我:https://stackoverflow.com/a/77168724
我只需要升级Gradle依赖项
出发地:
classpath 'com.android.tools.build:gradle:7.3.1'
至:
classpath 'com.android.tools.build:gradle:7.4.2'