优化 firebase 报错

This commit is contained in:
2025-09-08 15:42:55 +08:00
parent 1a41cb7aef
commit b79073b295
2 changed files with 65 additions and 0 deletions

View File

@@ -9,6 +9,7 @@
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<application
android:name=".RaveNowApplication"
android:allowBackup="false"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
@@ -36,6 +37,13 @@
android:name="com.google.firebase.messaging.default_notification_channel_id"
android:value="Default Message" />
<meta-data android:name="com.google.ar.core" android:value="optional" />
<!-- Firebase Performance 配置:禁用自动网络请求监控 -->
<meta-data
android:name="firebase_performance_collection_enabled"
android:value="true" />
<meta-data
android:name="firebase_performance_logcat_enabled"
android:value="false" />
<activity
android:name=".MainActivity"
android:exported="true"

View File

@@ -0,0 +1,57 @@
package com.aiosman.ravenow
import android.app.Application
import android.content.Context
import android.util.Log
import com.google.firebase.FirebaseApp
import com.google.firebase.perf.FirebasePerformance
/**
* 自定义Application类用于处理多进程中的Firebase初始化
*/
class RaveNowApplication : Application() {
override fun onCreate() {
super.onCreate()
// 获取当前进程名
val processName = getCurrentProcessName()
Log.d("RaveNowApplication", "当前进程: $processName")
// 在所有进程中初始化Firebase
try {
if (FirebaseApp.getApps(this).isEmpty()) {
FirebaseApp.initializeApp(this)
Log.d("RaveNowApplication", "Firebase已在进程 $processName 中初始化")
// 如果是pushcore进程禁用Firebase Performance监控
if (processName.contains(":pushcore")) {
try {
FirebasePerformance.getInstance().isPerformanceCollectionEnabled = false
Log.d("RaveNowApplication", "已在pushcore进程中禁用Firebase Performance监控")
} catch (e: Exception) {
Log.w("RaveNowApplication", "禁用Firebase Performance监控失败", e)
}
}
} else {
Log.d("RaveNowApplication", "Firebase已在进程 $processName 中存在")
}
} catch (e: Exception) {
Log.e("RaveNowApplication", "Firebase初始化失败在进程 $processName", e)
}
}
/**
* 获取当前进程名
*/
private fun getCurrentProcessName(): String {
return try {
val pid = android.os.Process.myPid()
val activityManager = getSystemService(Context.ACTIVITY_SERVICE) as android.app.ActivityManager
val processes = activityManager.runningAppProcesses
processes?.find { it.pid == pid }?.processName ?: "unknown"
} catch (e: Exception) {
"unknown"
}
}
}