NPE на FirebaseFunctions getInstance - PullRequest
       12

NPE на FirebaseFunctions getInstance

0 голосов
/ 02 ноября 2018

При вызове FirebaseFunctions.getInstance(FirebaseApp.getInstance()) выбрасывается NPE. FirebaseApp.initializeApp(this); вызывается внутри расширенного класса приложения onCreate перед вызовом любой другой функциональности Firebase.

Это трассировка стека:

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:

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

Я использую:

  • com.google.firebase: firebase-functions: 12.0.1 (также все остальные библиотеки Firebase используют ту же версию)
  • DexGuard версия 8.1.15
  • classpath 'com.google.gms: google-services: 4.0.1'

При использовании конфигурации отладки все работает как шарм, есть идеи, как решить эту проблему?

Уже проверили подобный вопрос, но он устарел: Ошибка с вызываемыми функциями Firebase

РЕДАКТИРОВАТЬ - Новая конфигурация

Я попытался обновить зависимости DexGuard и Firebase с приведенными ниже:

  • com.google.firebase: firebase-functions: 16.1.1 (все остальные зависимости от firebase и gms обновлены до последней, за исключением объявлений play-services-16.0.0)
  • DexGuard версия 8.2.20
  • classpath 'com.google.gms: google-services: 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)

1 Ответ

0 голосов
/ 26 ноября 2018

Для тех, кто может столкнуться с той же проблемой, это было вызвано полем "projectId", равным null, когда FirebaseOptions был инициализирован SDK с использованием FirebaseOptions.fromResource(Context), и приложение было защищено DexGuard

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

Проблема была решена добавлением следующей строки в файл конфигурации DexGuard:

-keepresources string/project_id 
...