NPE on FirebaseFunctions getInstance



调用FirebaseFunctions.getInstance(FirebaseApp.getInstance())时,会抛出一个NPE。在调用任何其他firebase功能之前,在扩展应用程序类onCreate内部调用FirebaseApp.initializeApp(this);

这是堆叠竞赛:

Fatal Exception: java.lang.NullPointerException
at com.google.firebase.functions.internal.Preconditions.checkNotNull(Unknown Source:876)
at com.google.firebase.functions.FirebaseFunctions.<init>(Unknown Source:77)
at com.google.firebase.functions.FirebaseFunctions.getInstance(Unknown Source:141)
at com.google.firebase.functions.FirebaseFunctions.getInstance(Unknown Source:159)

只有在使用发布配置构建应用程序时才会抛出异常,这意味着代码会被DexGuard混淆,但所有的firebase类都被排除在混淆之外,在我的DexGuard-config:下面

...
-keep class com.google.** { *; }
-keep class android.** { *; }
-keep class com.firebase.** { *; }
-keep class com.android.** { *; }
...

我正在使用:

  • com.google.firebase:firebase函数:12.0.1(所有其他firebase库也使用相同的版本(
  • DexGuard 8.1.15版
  • classpath com.google.gms:google服务:4.0.1'

当使用调试配置时,一切都很正常,你知道如何解决这个问题吗?

已经检查了这个类似的问题,但它已经过时了:Firebase可调用函数错误

编辑-新配置

我试着用下面的更新DexGuard依赖项和Firebase依赖项:

  • com.google.firebase:firebase函数:16.1.1(所有其他firebase和gms依赖项都更新到最新版本,除了16.0.0的播放服务广告(
  • DexGuard版本8.2.20
  • classpath com.google.gms:google服务:4.0.1'

这是新的堆栈:

Fatal Exception: java.lang.NullPointerException: null reference
at com.google.firebase.functions.a.a.a(Unknown Source:30)
at com.google.firebase.functions.FirebaseFunctions.(Unknown Source:77)
at com.google.firebase.functions.FirebaseFunctions.getInstance(Unknown Source:141)
at com.google.firebase.functions.FirebaseFunctions.getInstance(Unknown Source:154)

对于那些可能面临相同问题的人,这是由于"projectId"字段为null引起的,当时sdk使用FirebaseOptions.fromResource(Context)初始化FirebaseOptions,并且应用程序受到DexGuard 保护

FirebaseOptions {
applicationId = ***********************, 
apiKeyapiKey = ***********************, 
databaseUrl = ***********************, 
gcmSenderId = ***********************, 
storageBucket = ***********************, 
projectId = null
} 

通过在DexGuard配置文件中添加以下行,问题已经得到解决:

-keepresources string/project_id 

相关内容

  • 没有找到相关文章