You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无Google服务设备Firebase Perf空指针异常问题求助

我刚好碰到过一模一样的问题,根源就是你的设备没有Google Play服务,但集成的Firebase Performance SDK依赖GMS才能正常初始化,导致抛出空指针异常。下面是详细的分析和可行的解决办法:

环境信息

  • Android设备:MI 5、MI 6
  • Android系统版本:8.0.0
  • Google Play服务版本:无Google服务
  • Firebase/Play服务SDK版本:com.google.firebase:firebase-plugins:1.1.0、com.google.firebase:firebase-perf:15.1.0
  • TargetSdkVersion:26

问题详情

抛出的空指针异常栈信息:

java.lang.NullPointerException Attempt to invoke virtual method 'void com.google.android.gms.internal.firebase-perf.zzq.zzb(boolean)' on a null object reference 
com.google.android.gms.internal.firebase-perf.zzg.zzc(Unknown Source:2) 
com.google.android.gms.internal.firebase-perf.zzk.run(Unknown Source:4) 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162) 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636) 
java.lang.Thread.run(Thread.java:764)

相关初始化日志

Firebase初始化失败的完整日志:

FirebaseApp: Firebase API初始化失败。java.lang.reflect.InvocationTargetException 
at java.lang.reflect.Method.invoke(Native Method) 
at com.google.firebase.FirebaseApp.zza(Unknown Source:72) 
at com.google.firebase.FirebaseApp.zzc(Unknown Source:49) 
at com.google.firebase.FirebaseApp.initializeApp(Unknown Source:119) 
at com.google.firebase.FirebaseApp.initializeApp(Unknown Source:2) 
at com.google.firebase.FirebaseApp.initializeApp(Unknown Source:28) 
at com.google.firebase.provider.FirebaseInitProvider.onCreate(Unknown Source:4) 
at android.content.ContentProvider.attachInfo(ContentProvider.java:1927) 
at android.content.ContentProvider.attachInfo(ContentProvider.java:1902) 
at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source:23) 
at android.app.ActivityThread.installProvider(ActivityThread.java:6425) 
at android.app.ActivityThread.installContentProviders(ActivityThread.java:5939) 
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5851) 
at android.app.ActivityThread.-wrap1(Unknown Source:0) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1689) 
at android.os.Handler.dispatchMessage(Handler.java:105) 
at android.os.Looper.loop(Looper.java:164) 
at android.app.ActivityThread.main(ActivityThread.java:6683) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:782) 
Caused by: java.lang.SecurityException: 未找到用户0的com.google.android.gms.phenotype提供者;期望找到该权限对应的有效ContentProvider 
at android.os.Parcel.readException(Parcel.java:1942) 
at android.os.Parcel.readException(Parcel.java:1888) 
at android.content.IContentService$Stub$Proxy.registerContentObserver(IContentService.java:768) 
at android.content.ContentResolver.registerContentObserver(ContentResolver.java:1940) 
at android.content.ContentResolver.registerContentObserver(ContentResolver.java:1929) 
at com.google.android.gms.internal.measurement.zzwp.zza(Unknown Source:32) 
at com.google.android.gms.internal.measurement.zzws.zzry(Unknown Source:33) 
at com.google.android.gms.internal.measurement.zzws.get(Unknown Source:14) 
at com.google.android.gms.internal.measurement.zzex.get(Unknown Source:2) 
at com.google.android.gms.internal.measurement.zzfg.zziu(Unknown Source:7) 
at com.google.android.gms.internal.measurement.zzfg.isLoggable(Unknown Source:0) 
at com.google.android.gms.internal.measurement.zzfg.zza(Unknown Source:3) 
at com.google.android.gms.internal.measurement.zzfi.log(Unknown Source:12) 
at com.google.android.gms.internal.measurement.zzgl.<init>(Unknown Source:226) 
at com.google.android.gms.internal.measurement.zzgl.zzg(Unknown Source:28) 
at com.google.android.gms.measurement.AppMeasurement.getInstance(Unknown Source:0) 
at java.lang.reflect.Method.invoke(Native Method)

解决方案

方案1:移除Firebase Performance SDK(如果不需要该功能)

如果你的应用不需要Firebase性能监控功能,最简单的办法就是直接移除相关依赖:
在你的app/build.gradle中删除以下内容:

// 删除这两行
implementation 'com.google.firebase:firebase-perf:15.1.0'
apply plugin: 'com.google.firebase.firebase-perf'

同时在项目根目录的build.gradle中删除firebase-plugins的依赖:

classpath 'com.google.firebase:firebase-plugins:1.1.0' // 删除这一行

方案2:兼容无GMS设备的初始化逻辑

如果需要保留Firebase Performance功能,要调整初始化逻辑,避免在无GMS的设备上触发初始化:

  1. 在自定义Application类中先检查Google Play服务是否可用:
import android.app.Application;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GoogleApiAvailability;
import com.google.firebase.FirebaseApp;
import com.google.firebase.perf.FirebasePerformance;

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        // 仅在GMS可用时初始化Firebase
        if (GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(this) == ConnectionResult.SUCCESS) {
            FirebaseApp.initializeApp(this);
            // 手动开启性能采集
            FirebasePerformance.getInstance().setPerformanceCollectionEnabled(true);
        }
    }
}
  1. 在AndroidManifest.xml中添加meta-data禁用自动初始化:
<meta-data
    android:name="firebase_performance_auto_collection_enabled"
    android:value="false" />

方案3:升级Firebase SDK版本

你当前使用的SDK版本15.1.0比较老旧,新版本的Firebase SDK对无GMS设备的兼容性有很大提升。建议升级到稳定的新版本,比如:
在项目根目录build.gradle中:

classpath 'com.google.firebase:firebase-plugins:2.0.0'

在app/build.gradle中:

implementation 'com.google.firebase:firebase-perf:20.0.0'
apply plugin: 'com.google.firebase.firebase-perf'

升级后SDK会自动处理无GMS设备的情况,无需额外修改代码。

内容的提问来源于stack exchange,提问作者da que

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:30:30