我在 Flutter 应用程序中遇到 Firebase Analytics 事件日志记录问题。尽管事件在 iOS 上完美运行,但 Android 设备上不会记录事件。 adb logcat 中出现以下错误消息:
05-27 14:55:08.562 V/FA-SVC (6814): 网络上传失败。稍后会重试。代码,错误:0,java.net.ConnectException:无法连接到 app-measurement.com/[::]:443: btlq.run(:com.google.android.gms@[电子邮件受保护] (190400 -633713831):154)
故障排除:
GoogleService-Info.plist
(iOS) 或 google-services.json
(Android) 的正确位置、Firebase 中的项目注册,并确保启用 Analytics。flutter pub outdated
和 flutter pub upgrade
解决了任何冲突。flutter clean
和 flutter build apk
清理并重建应用程序。环境:
相关文件:
project/build.gradle
buildscript {
ext.kotlin_version = '1.9.22'
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.4.2'
// START: FlutterFire Configuration
classpath 'com.google.gms:google-services:4.4.1'
// END: FlutterFire Configuration
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects {
repositories {
google()
mavenCentral()
}
}
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
project.evaluationDependsOn(':app')
}
tasks.register("clean", Delete) {
delete rootProject.buildDir
}
app/build.gradle
plugins {
id "com.android.application"
id("com.google.gms.google-services")
id "kotlin-android"
id "dev.flutter.flutter-gradle-plugin"
}
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
}
def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '1.0'
}
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
android {
namespace "ro.test.test"
compileSdkVersion 34
ndkVersion flutter.ndkVersion
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "ro.daredigital.wishmo"
// You can update the following values to match your application needs.
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
minSdkVersion 24
targetSdkVersion 34
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
multiDexEnabled true
}
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
}
flutter {
source '../..'
}
dependencies {
// Import the BoM for the Firebase platform
implementation(platform("com.google.firebase:firebase-bom:33.0.0"))
// Add the dependency for the Analytics library
// When using the BoM, you dopn't specify versions in Firebase library dependencies
implementation("com.google.firebase:firebase-analytics")
}
Android 设备上的 Firebase Analytics 事件日志记录问题(由于
java.net.ConnectException
导致事件无法上传)表明存在网络连接问题。此问题可能是由于多种因素造成的,包括网络配置、权限或 Firebase 设置。以下是帮助排查和解决此问题的几个步骤:
确保您的 AndroidManifest.xml 文件包含必要的互联网权限。
<uses-permission android:name="android.permission.INTERNET"/>
确保您的 Firebase 配置在您的 Android 项目中正确设置。
google-services.json
文件是否正确放置在 app
目录中。build.gradle
文件中:项目级build.gradle:
buildscript {
dependencies {
classpath 'com.google.gms:google-services:4.3.10' // Use the latest version
}
}
应用程序级build.gradle:
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
// Add dependencies
dependencies {
implementation 'com.google.firebase:firebase-analytics:21.1.0' // Use the latest version
}
确保不存在可能阻止访问
app-measurement.com
的网络限制或防火墙设置。
确保所有依赖项都是最新的,尤其是 Google Play 服务和 Firebase 库。您可以通过
build.gradle
文件或 Android Studio 中的 SDK 管理器更新它们。
确保设备的日期和时间设置正确。不正确的时间设置可能会导致 SSL/TLS 连接问题,从而可能导致与 Firebase 服务器的连接失败。
如果您在调试模式下运行应用程序,请尝试在发布模式下运行它,看看问题是否仍然存在。由于额外的调试开销,调试版本有时可能会具有不同的行为。
继续监视 adb logcat 以获取可能提供其他线索的更详细的错误消息。重点关注 Firebase 相关标签,例如
FA-SVC
、FA
和 Firebase
。
adb logcat -s FA FA-SVC Firebase
确保 Google Play 服务在设备上可用且是最新的。
如果您使用防火墙或 VPN,请尝试暂时禁用它,看看是否可以解决问题。