การแก้ปัญหา & คำถามที่พบบ่อยสำหรับ Android และ Firebase

หน้านี้มีเคล็ดลับและการแก้ปัญหาเฉพาะสำหรับ Android ซึ่งคุณอาจพบเมื่อใช้ Firebase

หากพบปัญหาอื่นๆ หรือไม่พบปัญหาที่ระบุไว้ด้านล่าง อย่าลืมอ่านคําถามที่พบบ่อยหลักของ Firebase เพื่อดูคําถามที่พบบ่อยเกี่ยวกับ Firebase ทั้งหมดหรือเฉพาะผลิตภัณฑ์

นอกจากนี้ คุณยังดูรายการปัญหาที่รายงานและการแก้ปัญหาล่าสุดได้ในที่เก็บ GitHub ของ Firebase Android SDK เราขอแนะนําให้คุณยื่นปัญหาเกี่ยวกับ Firebase Android SDK ของคุณเองในฟอรัมดังกล่าวด้วย

Firebase Authentication (เมื่อใช้Google Sign-In หรือการเข้าสู่ระบบด้วยหมายเลขโทรศัพท์) และ Firebase Dynamic Links ต้องใช้ข้อมูล SHA-1 หากไม่ได้ใช้ฟีเจอร์เหล่านี้ คุณก็ไม่ต้องระบุ SHA-1

ข้อผิดพลาดนี้เกิดขึ้นหากเราตรวจพบว่าโปรเจ็กต์ Firebase หรือ Google Cloud อื่นมีรหัสไคลเอ็นต์ OAuth 2.0 ที่มีชื่อแพ็กเกจและ SHA-1 ที่คุณระบุไว้ ดูวิธีแก้ไขข้อผิดพลาดนี้

ข้อผิดพลาดนี้มักจะหมายความว่าแอปของคุณไม่มีข้อมูลอ้างอิงอย่างน้อย 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 ได้ปิดใช้การกรอง Sugar ออกจากไลบรารี Android ทั้งหมด (ดูหมายเหตุเกี่ยวกับรุ่น)

การเปลี่ยนแปลงนี้หมายความว่าบิลด์ Gradle ที่ใช้ปลั๊กอิน Android Gradle (AGP) v4.2 หรือเก่ากว่าจะต้องเปิดใช้การรองรับ Java 8 มิเช่นนั้น เมื่อเพิ่ม Firebase SDK โปรเจ็กต์ Android เหล่านี้จะสร้างไม่สําเร็จดังต่อไปนี้

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.

หากต้องการแก้ไขการสร้างที่ไม่สําเร็จนี้ ให้ทําตามตัวเลือกใดตัวเลือกหนึ่งต่อไปนี้

  • เพิ่ม compileOptions ที่แสดงในข้อความแสดงข้อผิดพลาดลงในไฟล์ build.gradle.kts หรือ build.gradle ระดับแอป
  • เพิ่ม minSdkVersion สำหรับโปรเจ็กต์ Android เป็น 26 ขึ้นไป

ปัญหานี้อาจเกิดขึ้นได้ 2 สาเหตุ ได้แก่ คุณไม่ได้ระบุอีเมลการสนับสนุนหรือไม่มีคีย์ SHA โปรดตรวจสอบว่าเงื่อนไขทั้งหมดดังต่อไปนี้เป็นจริงเท่านั้นเพื่อแก้ไขข้อผิดพลาดนี้

Firebase มีปลั๊กอิน Gradle ต่อไปนี้

ชื่อปลั๊กอิน พิกัด Maven เวอร์ชันล่าสุด รหัสปลั๊กอิน
ปลั๊กอินบริการ Google Play 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) ให้เพิ่มปลั๊กอินเป็น Dependency โดยใช้พิกัด 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'
        ...
    }