NPE on FirebaseFunctions getInstance

NPE on FirebaseFunctions getInstance

调用 FirebaseFunctions.getInstance(FirebaseApp.getInstance()) 时会抛出 NPE。 FirebaseApp.initializeApp(this); 在调用任何其他 firebase 功能之前在扩展应用程序 class onCreate 中被调用。

这是堆栈跟踪:

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 classes 已被排除在混淆之外,在我的 dexguard 配置下:

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

我正在使用:

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

已经检查过这个类似的问题,但它已经过时了:Error with Firebase callable functions

编辑 - 新配置

我尝试使用以下内容更新 DexGuard 依赖项和 Firebase 依赖项:

这是新的堆栈跟踪:

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)

对于可能遇到相同问题的人,这是由于 SDK 使用 FirebaseOptions.fromResource(Context) 初始化 FirebaseOptions 时 "projectId" 字段为 null 并且应用程序是使用 DexGuard

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

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

-keepresources string/project_id