פתרון בעיות ושאלות נפוצות בנושא Android ו-Firebase

בדף הזה מופיעים טיפים ודרכים לפתרון בעיות ספציפיות ל-Android שאתם עשויים להיתקל בהן כשאתם משתמשים ב-Firebase.

נתקלת בבעיות אחרות או שהבעיה שלך לא מופיעה בהמשך? מומלץ לעיין בשאלות הנפוצות הראשיות בנושא Firebase כדי לקבל שאלות נפוצות נוספות בנושא Firebase או שאלות נפוצות ספציפיות למוצרים.

אפשר גם להיכנס למאגר GitHub של Firebase Android SDK כדי לראות רשימה עדכנית של בעיות שדווחו ושל דרכים לפתרון בעיות. מומלץ לשלוח דיווחים על בעיות שקשורות ל-Firebase Android SDK גם שם.

פרטי SHA-1 נדרשים על ידי Firebase Authentication (כשמשתמשים בכניסה באמצעות חשבון Google או בכניסה באמצעות מספר טלפון) וגם על ידי Firebase Dynamic Links. אם אתם לא משתמשים בתכונות האלה, אין צורך לספק SHA-1.

השגיאה הזו מתרחשת אם אנחנו מזהים שפרויקט אחר ב-Firebase או ב-Google Cloud מכיל מזהה לקוח של OAuth 2.0 עם שם החבילה ו-SHA-1 שציינתם. כך פותרים את השגיאה הזו

בדרך כלל, השגיאה הזו מופיעה אם באפליקציה חסר אזכור אחד לפחות למאגר Maven של Google. חשוב לכלול את מאגר Maven של Google‏ (google()) בקובץ ההגדרה של Gradle.

  • אם בפרויקט שלכם נעשה שימוש בתחביר plugins, צריך לכלול אותו בקטע plugins בקובץ settings.gradle.kts או בקובץ settings.gradle.
  • אם בפרויקט שלכם נעשה שימוש בתחביר buildscript, צריך לכלול אותו גם בקטעים buildscript וגם בקטעים allprojects בקובץ build.gradle.kts או בקובץ build.gradle ברמת הפרויקט.

במאי 2021 (Firebase BoM v28.0.0), השבתנו את הסרת הסוכר מכל הספריות של Firebase ל-Android (ראו הערה לגרסה).

כתוצאה מהשינוי הזה, ב-builds של Gradle שמשתמשים בפלאגין של Android Gradle ‏ (AGP) בגרסה 4.2 ואילך צריך להפעיל תמיכה ב-Java 8. אחרת, כשמוסיפים Firebase SDK, בפרויקטים האלה ל-Android מופיעה הודעת השגיאה הבאה לגבי ה-build:

D8: Invoke-customs are only supported starting with Android O (--min-api 26)
Caused by: com.android.builder.dexing.DexArchiveBuilderException: Error while dexing.
The dependency contains Java 8 bytecode. Please enable desugaring by adding the following to build.gradle
android {
    compileOptions {
        sourceCompatibility 1.8
        targetCompatibility 1.8
    }
}
See https://developer.android.com/studio/write/java8-support.html for details.
Alternatively, increase the minSdkVersion to 26 or above.

כדי לפתור את התקלה ב-build, אפשר לפעול לפי אחת משתי האפשרויות הבאות:

  • מוסיפים את הערך של compileOptions שמופיע בהודעת השגיאה לקובץ build.gradle.kts או build.gradle ברמת האפליקציה.
  • צריך להגדיל את הערך של minSdkVersion בפרויקט Android ל-26 ומעלה.

יש שתי סיבות אפשריות לכך: לא ציינת אימייל לתמיכה או שחסרה מפתח SHA. כדי לתקן את השגיאה הזו, צריך לוודא שכל התנאים הבאים מתקיימים:

ל-Firebase יש את הפלאגינים הבאים ל-Gradle:

שם הפלאגין קואורדינטות Maven הגרסה העדכנית ביותר מזהה הפלאגין
הפלאגין של Google Play Services com.google.gms:google-services 4.4.2 com.google.gms.google-services
הפלאגין App Distribution com.google.firebase:firebase-appdistribution-gradle 5.1.1 com.google.firebase.appdistribution
הפלאגין Crashlytics com.google.firebase:firebase-crashlytics-gradle 3.0.3 com.google.firebase.crashlytics
הפלאגין Performance Monitoring com.google.firebase:perf-plugin 1.4.2 com.google.firebase.firebase-perf

כך מוסיפים פלאגין של Firebase לפרויקט Android שעדיין משתמש בתחביר buildscript:

  1. בקובץ Gradle ברמת השורש (ברמת הפרויקט) (<project>/build.gradle.kts או <project>/build.gradle), מוסיפים את הפלאגין כיחסי תלות באמצעות הקואורדינטות שלו ב-Maven:

    KotlinGroovy
    buildscript {
    
        repositories {
          // Make sure that you have the following two repositories
          google()  // Google's Maven repository
          mavenCentral()  // Maven Central repository
        }
    
        dependencies {
          ...
    
          // Add the Maven coordinates and latest version of the plugin
          classpath ("PLUGIN_MAVEN_COORDINATES:PLUGIN_VERSION")
        }
    }
    
    allprojects {
      ...
    
      repositories {
        // Make sure that you have the following two repositories
        google()  // Google's Maven repository
        mavenCentral()  // Maven Central repository
      }
    }
    
    buildscript {
    
        repositories {
          // Make sure that you have the following two repositories
          google()  // Google's Maven repository
          mavenCentral()  // Maven Central repository
        }
    
        dependencies {
          ...
    
          // Add the Maven coordinates and latest version of the plugin
          classpath 'PLUGIN_MAVEN_COORDINATES:PLUGIN_VERSION'
        }
    }
    
    allprojects {
      ...
    
      repositories {
        // Make sure that you have the following two repositories
        google()  // Google's Maven repository
        mavenCentral()  // Maven Central repository
      }
    }
    
  2. בקובץ Gradle של המודול (ברמת האפליקציה) (בדרך כלל <project>/<app-module>/build.gradle.kts או <project>/<app-module>/build.gradle), מוסיפים את הפלאגין באמצעות מזהה הפלאגין:

    KotlinGroovy
    plugins {
        id("com.android.application")
    
        // Add the ID of the plugin
        id("FIREBASE_PLUGIN_ID")
        ...
    }
    
    plugins {
        id 'com.android.application'
    
        // Add the ID of the plugin
        id 'FIREBASE_PLUGIN_ID'
        ...
    }