เพิ่ม Firebase ไปยังโปรเจ็กต์ C++

ยกระดับเกม C++ ด้วย Firebase C++ SDK ซึ่งมีอินเทอร์เฟซ C++ อยู่เหนือ Firebase SDK

เข้าถึง Firebase จากโค้ด C++ โดยสมบูรณ์โดยไม่ต้องเขียนโค้ดเฉพาะแพลตฟอร์ม นอกจากนี้ Firebase SDK ยังแปลสำนวนเฉพาะภาษาหลายอย่างที่ Firebase ใช้เป็นอินเทอร์เฟซที่นักพัฒนาแอป C++ คุ้นเคยมากขึ้นด้วย

ดูข้อมูลเพิ่มเติมเกี่ยวกับการเพิ่มประสิทธิภาพเกมด้วย Firebase ได้ที่ หน้าเกมของ Firebase

หากเพิ่ม Firebase ลงในโปรเจ็กต์ C++ แล้ว ตรวจสอบว่าคุณใช้ Firebase C++ SDK เวอร์ชันล่าสุด


ข้อกำหนดเบื้องต้น

  • ติดตั้งโปรแกรมแก้ไขหรือ IDE ที่ต้องการ เช่น Android Studio, IntelliJ หรือ VS Code

  • รับ Android SDK

  • ตรวจสอบว่าโปรเจ็กต์เป็นไปตามข้อกำหนดต่อไปนี้

  • ตั้งค่าอุปกรณ์จริงหรือใช้โปรแกรมจำลองเพื่อเรียกใช้แอป

    • โปรแกรมจำลอง ต้องใช้รูปภาพโปรแกรมจำลองที่มี Google Play

    • ไลบรารี C++ บางรายการต้องใช้บริการ Google Play ในอุปกรณ์ไคลเอ็นต์ โปรดดูรายการในหน้านี้

  • ลงชื่อเข้าใช้ Firebase ด้วยบัญชี Google

ขั้นตอนที่ 2: สร้างโปรเจ็กต์ Firebase

ก่อนที่จะเพิ่ม Firebase ลงในโปรเจ็กต์ C++ ได้ คุณต้องสร้างโปรเจ็กต์ Firebase เพื่อเชื่อมต่อกับโปรเจ็กต์ C++ ดูข้อมูลเพิ่มเติมเกี่ยวกับโปรเจ็กต์ Firebase ได้ที่ทำความเข้าใจโปรเจ็กต์ Firebase

  1. ในFirebase คอนโซล ให้คลิกเพิ่มโปรเจ็กต์

    • หากต้องการเพิ่มทรัพยากร Firebase ลงในโปรเจ็กต์ที่มีอยู่ Google Cloud ให้ป้อนชื่อโปรเจ็กต์หรือเลือกจากเมนูแบบเลื่อนลง

    • หากต้องการสร้างโปรเจ็กต์ใหม่ ให้ป้อนชื่อโปรเจ็กต์ นอกจากนี้ คุณยัง เลือกแก้ไขรหัสโปรเจ็กต์ที่แสดงใต้ชื่อโปรเจ็กต์ได้ด้วย

  2. หากได้รับแจ้ง ให้อ่านและยอมรับข้อกำหนดของ Firebase

  3. คลิกต่อไป

  4. (ไม่บังคับ) ตั้งค่า Google Analytics สำหรับโปรเจ็กต์ ซึ่งจะ ช่วยให้ได้รับประสบการณ์การใช้งานที่ดียิ่งขึ้นเมื่อใช้ผลิตภัณฑ์ Firebase ต่อไปนี้ Firebase A/B Testing Cloud Messaging Crashlytics In-App Messaging และ Remote Config (รวมถึงการปรับเปลี่ยนในแบบของคุณ)

    เลือกบัญชี Google Analytics ที่มีอยู่ หรือสร้างบัญชีใหม่ หากสร้างบัญชีใหม่ ให้เลือกAnalyticsสถานที่ตั้งการรายงาน จากนั้นยอมรับการตั้งค่าการแชร์ข้อมูลและGoogle Analyticsข้อกำหนดสำหรับ โปรเจ็กต์

  5. คลิกสร้างโปรเจ็กต์ (หรือเพิ่ม Firebase หากคุณเพิ่ม Firebase ไปยังโปรเจ็กต์ Google Cloud ที่มีอยู่)

Firebase จะจัดสรรทรัพยากรสำหรับโปรเจ็กต์ Firebase โดยอัตโนมัติ เมื่อ กระบวนการเสร็จสมบูรณ์ ระบบจะนำคุณไปยังหน้าภาพรวมของโปรเจ็กต์ Firebase ในFirebaseคอนโซล

ขั้นตอนที่ 3: ลงทะเบียนแอปกับ Firebase

หากต้องการใช้ Firebase ในแอป Android คุณต้องลงทะเบียนแอปกับโปรเจ็กต์ Firebase การลงทะเบียนแอปมักเรียกว่า "การเพิ่ม" แอปไปยังโปรเจ็กต์

  1. ไปที่คอนโซล Firebase

  2. ที่กึ่งกลางหน้าภาพรวมโปรเจ็กต์ ให้คลิกไอคอน Android () หรือเพิ่มแอปเพื่อเปิดเวิร์กโฟลว์การตั้งค่า

  3. ป้อนชื่อแพ็กเกจของแอปในช่องชื่อแพ็กเกจ Android

    • ชื่อแพ็กเกจ จะระบุแอปของคุณในอุปกรณ์และ Google Play Store ได้อย่างไม่ซ้ำกัน

    • โดยทั่วไปแล้ว ชื่อแพ็กเกจมักจะเรียกว่ารหัสแอปพลิเคชัน

    • ค้นหาชื่อแพ็กเกจของแอปในไฟล์ Gradle ของโมดูล (ระดับแอป) ซึ่งโดยปกติคือ app/build.gradle (ตัวอย่างชื่อแพ็กเกจ: com.yourcompany.yourproject)

    • โปรดทราบว่าค่าชื่อแพ็กเกจจะคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ และคุณจะเปลี่ยนค่านี้สำหรับแอป Android ใน Firebase ไม่ได้หลังจากที่ลงทะเบียนกับโปรเจ็กต์ Firebase แล้ว

  4. (ไม่บังคับ) ป้อนข้อมูลแอปอื่นๆ ดังนี้ ชื่อเล่นของแอปและ SHA-1 ของใบรับรองการลงนามสำหรับแก้ไขข้อบกพร่อง

  5. คลิกลงทะเบียนแอป

ขั้นตอนที่ 4: เพิ่มไฟล์กำหนดค่า Firebase

  1. คลิกดาวน์โหลด google-services.json เพื่อรับไฟล์กำหนดค่า Firebase Android

    • ไฟล์การกำหนดค่า Firebase จะมีตัวระบุที่ไม่ซ้ำกันและไม่เป็นความลับสำหรับ โปรเจ็กต์และแอปของคุณ หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับไฟล์การกำหนดค่านี้ โปรดไปที่ทำความเข้าใจโปรเจ็กต์ Firebase

    • คุณดาวน์โหลดไฟล์กำหนดค่า Firebase อีกครั้งได้ทุกเมื่อ

    • โปรดตรวจสอบว่าชื่อไฟล์การกำหนดค่าไม่มีอักขระต่อท้ายเพิ่มเติม เช่น (2)

  2. เปิดโปรเจ็กต์ C++ ใน IDE แล้วเพิ่มไฟล์การกำหนดค่าลงในโปรเจ็กต์โดยทำดังนี้

  3. (การสร้าง Gradle เท่านั้น) หากต้องการเปิดใช้บริการ Firebase ในโปรเจ็กต์ C++ ให้เพิ่มปลั๊กอิน google-services ลงในไฟล์ build.gradle ระดับบนสุด

    1. เพิ่มกฎเพื่อรวมปลั๊กอิน Gradle ของบริการของ Google ตรวจสอบว่าคุณมีที่เก็บ Maven ของ Google ด้วย

        buildscript {
      
          repositories {
            // Check that you have the following line (if not, add it):
            google()  // Google's Maven repository
          }
      
          dependencies {
            // ...
      
            // Add the following lines:
            classpath 'com.google.gms:google-services:4.4.3'  // Google Services plugin
            implementation 'com.google.android.gms:18.7.2'
          }
        }
      
        allprojects {
          // ...
      
          repositories {
            // Check that you have the following line (if not, add it):
            google()  // Google's Maven repository
            // ...
          }
        }
      
    2. ใช้ปลั๊กอิน Gradle ของบริการของ Google โดยทำดังนี้

        apply plugin: 'com.android.application'
        // Add the following line:
        apply plugin: 'com.google.gms.google-services'  // Google Services plugin
      
        android {
          // ...
        }
      
  4. คุณทำงานตั้งค่าในFirebaseคอนโซลเสร็จแล้ว ดำเนินการต่อเพื่อเพิ่ม Firebase C++ SDK ด้านล่าง

ขั้นตอนที่ 5: เพิ่ม Firebase C++ SDK

ขั้นตอนในส่วนนี้เป็นตัวอย่างวิธีเพิ่มผลิตภัณฑ์ Firebase ที่รองรับลงในโปรเจ็กต์ Firebase C++

  1. ดาวน์โหลด Firebase C++ SDK แล้วแตกไฟล์ SDK ไว้ที่ใดก็ได้ที่คุณสะดวก

    Firebase C++ SDK ไม่ได้เจาะจงแพลตฟอร์ม แต่มีไลบรารีที่เจาะจงแพลตฟอร์ม

  2. ในไฟล์ gradle.properties ของโปรเจ็กต์ ให้ระบุตำแหน่งของ SDK ที่ แตกไฟล์แล้ว

    systemProp.firebase_cpp_sdk.dir=full-path-to-SDK
  3. เพิ่มเนื้อหาต่อไปนี้ลงในไฟล์ settings.gradle ของโปรเจ็กต์

    def firebase_cpp_sdk_dir = System.getProperty('firebase_cpp_sdk.dir')
    
    gradle.ext.firebase_cpp_sdk_dir = "$firebase_cpp_sdk_dir"
    includeBuild "$firebase_cpp_sdk_dir"
  4. เพิ่มเนื้อหาต่อไปนี้ลงในไฟล์ Gradle ของโมดูล (ระดับแอป) (โดยปกติคือ app/build.gradle)
    รวมทรัพยากร Dependency ของไลบรารี สำหรับผลิตภัณฑ์ Firebase ที่ต้องการใช้ในแอป

    android.defaultConfig.externalNativeBuild.cmake {
    arguments "-DFIREBASE_CPP_SDK_DIR=$gradle.firebase_cpp_sdk_dir"
    }
    
    # Add the dependencies for the Firebase products you want to use in your app
    # For example, to use Analytics, Firebase Authentication, and Firebase Realtime Database
    apply from: "$gradle.firebase_cpp_sdk_dir/Android/firebase_dependencies.gradle"
    firebaseCpp.dependencies {
      analytics
      auth
      database
    }
    android.defaultConfig.externalNativeBuild.cmake {
    arguments "-DFIREBASE_CPP_SDK_DIR=$gradle.firebase_cpp_sdk_dir"
    }
    
    # Add the dependencies for the Firebase products you want to use in your app
    # For example, to use Firebase Authentication and Firebase Realtime Database
    apply from: "$gradle.firebase_cpp_sdk_dir/Android/firebase_dependencies.gradle"
    firebaseCpp.dependencies {
      auth
      database
    }
  5. เพิ่มเนื้อหาต่อไปนี้ลงในไฟล์ CMakeLists.txt ของโปรเจ็กต์
    รวมไลบรารีสำหรับ ผลิตภัณฑ์ Firebase ที่ต้องการใช้ในแอป

    # Add Firebase libraries to the target using the function from the SDK.
    add_subdirectory(${FIREBASE_CPP_SDK_DIR} bin/ EXCLUDE_FROM_ALL)
    
    # The Firebase C++ library `firebase_app` is required,
    # and it must always be listed last.
    
    # Add the Firebase SDKs for the products you want to use in your app
    # For example, to use Analytics, Firebase Authentication, and Firebase Realtime Database
    set(firebase_libs
      firebase_analytics
      firebase_auth
      firebase_database
      firebase_app
    )
    target_link_libraries(${target_name} "${firebase_libs}")
    # Add Firebase libraries to the target using the function from the SDK.
    add_subdirectory(${FIREBASE_CPP_SDK_DIR} bin/ EXCLUDE_FROM_ALL)
    
    # The Firebase C++ library `firebase_app` is required,
    # and it must always be listed last.
    
    # Add the Firebase SDKs for the products you want to use in your app
    # For example, to use Firebase Authentication and Firebase Realtime Database
    set(firebase_libs
      firebase_auth
      firebase_database
      firebase_app
    )
    target_link_libraries(${target_name} "${firebase_libs}")
  6. ซิงค์แอปเพื่อให้ทรัพยากร Dependency ทั้งหมดมีเวอร์ชันที่จำเป็น

  7. หากคุณเพิ่ม Analytics ให้เรียกใช้แอปเพื่อส่งการยืนยันไปยัง Firebase ว่าคุณผสานรวม Firebase เรียบร้อยแล้ว ไม่เช่นนั้น ให้ข้าม ขั้นตอนการยืนยัน

    บันทึกของอุปกรณ์จะแสดงการยืนยัน Firebase ว่าการเริ่มต้น เสร็จสมบูรณ์แล้ว หากคุณเรียกใช้แอปในโปรแกรมจำลองที่มีสิทธิ์เข้าถึงเครือข่าย Firebaseคอนโซลจะแจ้งให้คุณทราบว่าการเชื่อมต่อแอปเสร็จสมบูรณ์แล้ว

เรียบร้อยแล้ว แอป C++ ของคุณได้รับการลงทะเบียนและกำหนดค่าให้ใช้บริการ Firebase แล้ว

  1. ตรวจสอบว่าคุณมี Android NDK v10d ขึ้นไป
  2. ดาวน์โหลด Firebase C++ SDK แล้วแตกไฟล์ SDK ไว้ที่ใดก็ได้ที่คุณสะดวก

    Firebase C++ SDK ไม่ได้เจาะจงแพลตฟอร์ม แต่มีไลบรารีที่เจาะจงแพลตฟอร์ม

  3. เปิดไฟล์ local.properties แล้วทำดังนี้

    • ตั้งค่าตัวแปร firebase_cpp_sdk.dir เป็นตำแหน่งของ Firebase C++ SDK ที่ไม่ได้ซิป
    • ตั้งค่าตัวแปร ndk.dir เป็นตำแหน่งของ Android NDK
  4. หากต้องการใช้การรองรับ ndkBuild ในตัวของ Gradle ให้สร้างไดเรกทอรี jni ภายในไดเรกทอรีระดับบนสุด จากนั้นสร้างไฟล์ make ต่อไปนี้

    1. สร้างไฟล์ jni/Application.mk ที่มี ข้อมูลต่อไปนี้

      APP_PLATFORM:=android-14
      NDK_TOOLCHAIN_VERSION=clang
      APP_ABI:=armeabi-v7a arm64-v8a x86 x86_64
      APP_STL:=c++_static
      APP_MODULES:=android_main
      APP_CPPFLAGS+=-std=c++11
    2. สร้างไฟล์ jni/Android.mk ที่มีเนื้อหาต่อไปนี้

      รวมไลบรารีของผลิตภัณฑ์ Firebase ที่ต้องการใช้ เช่น หากต้องการใช้ Analytics ให้ทำดังนี้

      LOCAL_PATH:=$(call my-dir)/..
      
      ifeq ($(FIREBASE_CPP_SDK_DIR),)
      $(error FIREBASE_CPP_SDK_DIR must specify the Firebase package location.)
      endif
      
      # With Firebase libraries for the selected build configuration (ABI + STL)
      STL:=$(firstword $(subst _, ,$(APP_STL)))
      FIREBASE_LIBRARY_PATH:=\
      $(FIREBASE_CPP_SDK_DIR)/libs/android/$(TARGET_ARCH_ABI)/$(STL)
      
      # The Firebase C++ library `libfirebase_app.a` is required for all Firebase products.
      include $(CLEAR_VARS)
      LOCAL_MODULE:=firebase_app
      LOCAL_SRC_FILES:=$(FIREBASE_LIBRARY_PATH)/libfirebase_app.a
      LOCAL_EXPORT_C_INCLUDES:=$(FIREBASE_CPP_SDK_DIR)/include
      include $(PREBUILT_STATIC_LIBRARY)
      
      # Include the Firebase library for Google Analytics.
      # Note: Duplicate this block for each Firebase product that you want
      # to use in your app, and replace variable values as appropriate.
      include $(CLEAR_VARS)
      LOCAL_MODULE:=firebase_analytics
      LOCAL_SRC_FILES:=$(FIREBASE_LIBRARY_PATH)/libfirebase_analytics.a
      LOCAL_EXPORT_C_INCLUDES:=$(FIREBASE_CPP_SDK_DIR)/include
      include $(PREBUILT_STATIC_LIBRARY)
      
      include $(CLEAR_VARS)
      LOCAL_MODULE:=android_main
      # Reference your project's C++ source files
      LOCAL_SRC_FILES:=\
        $(LOCAL_PATH)/src/common_main.cc \
        $(LOCAL_PATH)/src/android/android_main.cc
      LOCAL_STATIC_LIBRARIES:=\
        firebase_analytics \
        firebase_app  # this library reference must always be listed last
      LOCAL_WHOLE_STATIC_LIBRARIES:=\
        android_native_app_glue
      LOCAL_C_INCLUDES:=\
        $(NDK_ROOT)/sources/android/native_app_glue \
        $(LOCAL_PATH)/src
      LOCAL_LDLIBS:=-llog -landroid -latomic
      LOCAL_ARM_MODE:=arm
      LOCAL_LDFLAGS:=-Wl,-z,defs -Wl,--no-undefined
      include $(BUILD_SHARED_LIBRARY)
      
      $(call import-add-path,$(NDK_ROOT)/sources/android)
      $(call import-module,android/native_app_glue)
  5. เปิดไฟล์ build.gradle ระดับบนสุด แล้วทำตามขั้นตอนต่อไปนี้

    1. เพิ่มทรัพยากร Dependency สำหรับผลิตภัณฑ์ Firebase ที่ต้องการใช้ เช่น หากต้องการใช้ Analytics ให้ทำดังนี้

      dependencies {
        implementation 'com.google.firebase:firebase-analytics:21.0.0'
      }
    2. เพิ่มบรรทัดต่อไปนี้เพื่อให้โปรเจ็กต์ใช้การรองรับ ndk-build ในตัวของ Gradle เพื่อรวมไลบรารี Firebase ที่ระบุไว้ในไฟล์ jni/Android.mk

      android {
      // ...
          defaultConfig {
              // ...
              externalNativeBuild.ndkBuild {
                  arguments "FIREBASE_CPP_SDK_DIR=${project.ext.firebase_cpp_sdk_dir}",
                            "NDK_APPLICTION_MK=jni/Application.mk",
                            sprintf("APP_PLATFORM=android-%d",
                            android.defaultConfig.minSdkVersion.mApiLevel)
              }
          }
      }

ผลิตภัณฑ์ Firebase แต่ละรายการมีทรัพยากร Dependency ที่แตกต่างกัน อย่าลืมเพิ่มทรัพยากร Dependency ทั้งหมดที่ระบุไว้สำหรับผลิตภัณฑ์ Firebase ที่ต้องการใช้

เพิ่มไลบรารี C++ ของ Firebase (เช่น libfirebase_app.a) โดย รวมไว้ในไฟล์ jni/Android.mk ระดับบนสุด สำหรับ การอ้างอิงอื่นๆ (เช่น com.google.firebase:firebase-auth) ให้เพิ่มลงในไฟล์ build.gradle ระดับบนสุด

ผลิตภัณฑ์ Firebase ไลบรารีและทรัพยากร Dependency
AdMob libfirebase_admob.a
(ต้องระบุ) libfirebase_analytics.a
(ต้องระบุ) libfirebase_app.a

implementation 'com.google.firebase:firebase-ads:19.8.0'
(ต้องระบุ) implementation 'com.google.firebase:firebase-analytics:21.0.0'
Analytics libfirebase_analytics.a
(ต้องระบุ) libfirebase_app.a

implementation 'com.google.firebase:firebase-analytics:21.0.0'
App Check libfirebase_app_check.a
(ต้องระบุ) libfirebase_app.a

implementation 'com.google.firebase:firebase-appcheck:17.0.0'
Authentication libfirebase_auth.a
(ต้องระบุ) libfirebase_app.a

implementation 'com.google.firebase:firebase-auth:21.0.5'
Cloud Firestore libfirebase_firestore.a
(ต้องระบุ) libfirebase_app.a

implementation 'com.google.firebase:firebase-firestore:24.1.2'
Cloud Functions libfirebase_functions.a
(ต้องระบุ) libfirebase_app.a

implementation 'com.google.firebase:firebase-functions:20.1.0'
Cloud Messaging libfirebase_messaging.a
(แนะนำ) libfirebase_analytics.a
(ต้องระบุ) libfirebase_app.a

implementation 'com.google.firebase:firebase-messaging:23.0.5'
(แนะนำ) implementation 'com.google.firebase:firebase-analytics:21.0.0'
Cloud Storage libfirebase_storage.a
(ต้องระบุ) libfirebase_app.a

implementation 'com.google.firebase:firebase-storage:20.0.1'
Dynamic Links ibfirebase_dynamic_links.a
(แนะนำ) libfirebase_analytics.a
(ต้องระบุ) libfirebase_app.a

implementation 'com.google.firebase:firebase-dynamic-links:21.0.1'
(แนะนำ) implementation 'com.google.firebase:firebase-analytics:21.0.0'
Realtime Database libfirebase_database.a
(ต้องระบุ) libfirebase_app.a

implementation 'com.google.firebase:firebase-database:20.0.5'
Remote Config libfirebase_remote_config.a
(แนะนำ) libfirebase_analytics.a
(ต้องระบุ) libfirebase_app.a

implementation 'com.google.firebase:firebase-config:21.1.0'
(แนะนำ) implementation 'com.google.firebase:firebase-analytics:21.0.0'

ไลบรารีที่ใช้ได้

ดูข้อมูลเพิ่มเติมเกี่ยวกับไลบรารี C++ Firebase ได้ในเอกสารอ้างอิงและใน SDK โอเพนซอร์ส ที่เผยแพร่ใน GitHub

ไลบรารีที่ใช้ได้สำหรับ Android (ใช้ CMake)

โปรดทราบว่าไลบรารี C++ สำหรับแพลตฟอร์ม Apple จะแสดงอยู่ในแพลตฟอร์ม Apple (iOS+) ในเวอร์ชันของหน้าการตั้งค่านี้

ผลิตภัณฑ์ Firebase การอ้างอิงไลบรารี
(firebaseCpp.dependencies
สำหรับไฟล์ build.gradle)
การอ้างอิงไลบรารี
(firebase_libs
สำหรับไฟล์ CMakeLists.txt)
AdMob admob firebase_admob
(ต้องระบุ) firebase_analytics
(ต้องระบุ) firebase_app
Analytics analytics firebase_analytics
(ต้องระบุ) firebase_app
App Check appCheck firebase_app_check
(ต้องระบุ) firebase_app
Authentication auth firebase_auth
(ต้องระบุ) firebase_app
Cloud Firestore firestore firebase_firestore
(ต้องระบุ) firebase_auth
(ต้องระบุ) firebase_app
Cloud Functions functions firebase_functions
(ต้องระบุ) firebase_app
Cloud Messaging messaging firebase_messaging
(แนะนำ) firebase_analytics
(ต้องระบุ) firebase_app
Cloud Storage storage firebase_storage
(ต้องระบุ) firebase_app
Dynamic Links dynamicLinks firebase_dynamic_links
(แนะนำ) firebase_analytics
(ต้องระบุ) firebase_app
Realtime Database database firebase_database
(ต้องระบุ) firebase_app
Remote Config remoteConfig firebase_remote_config
(แนะนำ) firebase_analytics
(ต้องระบุ) firebase_app

ข้อมูลเพิ่มเติมสำหรับการตั้งค่าบนอุปกรณ์เคลื่อนที่

รับรายงานข้อขัดข้องของ NDK

Firebase Crashlytics รองรับการรายงานข้อขัดข้องสำหรับแอปที่ใช้ไลบรารี Android เนทีฟ ดูข้อมูลเพิ่มเติมได้ที่ รับรายงานข้อขัดข้องของ Android NDK

ระบบบิลด์ที่กำหนดเอง

Firebase มีสคริปต์ generate_xml_from_google_services_json.py สำหรับgoogle-services.jsonเป็นทรัพยากร .xml ที่คุณสามารถรวมไว้ในโปรเจ็กต์ได้ สคริปต์นี้ใช้การเปลี่ยนรูปแบบเดียวกันกับที่ปลั๊กอิน Gradle ของบริการ Google Play ทำเมื่อสร้างแอปพลิเคชัน Android

หากไม่ได้สร้างโดยใช้ Gradle (เช่น ใช้ ndk-build, makefiles, Visual Studio ฯลฯ) คุณสามารถใช้สคริปต์นี้เพื่อสร้างทรัพยากรสตริง Android โดยอัตโนมัติ

ProGuard

ระบบบิลด์ Android หลายระบบใช้ ProGuard สำหรับบิลด์ในโหมดรีลีสเพื่อลดขนาดแอปพลิเคชันและปกป้องซอร์สโค้ด Java

หากใช้ ProGuard คุณจะต้องเพิ่มไฟล์ใน libs/android/*.pro ที่สอดคล้องกับไลบรารี C++ ของ Firebase ที่คุณใช้ในการกำหนดค่า ProGuard

เช่น หากใช้ Gradle และใช้ Google Analytics, ไฟล์ build.gradle จะมีลักษณะดังนี้

android {
  // ...
  buildTypes {
    release {
      minifyEnabled true
      proguardFile getDefaultProguardFile('your-project-proguard-config.txt')
      proguardFile file(project.ext.your_local_firebase_sdk_dir + "/libs/android/app.pro")
      proguardFile file(project.ext.your_local_firebase_sdk_dir + "/libs/android/analytics.pro")
      // ...  and so on, for each Firebase C++ library that you're using
    }
  }
}

ข้อกำหนดของบริการ Google Play

ไลบรารี C++ ของ Firebase ส่วนใหญ่กำหนดให้บริการ Google Play ต้องอยู่ในอุปกรณ์ Android ของไคลเอ็นต์ หากไลบรารี C++ ของ Firebase แสดง kInitResultFailedMissingDependency เมื่อเริ่มต้น แสดงว่าบริการ Google Play ไม่พร้อมใช้งานใน อุปกรณ์ไคลเอ็นต์ (หมายความว่าต้องอัปเดต เปิดใช้งานอีกครั้ง แก้ไขสิทธิ์ ฯลฯ) คุณจะใช้ไลบรารี Firebase ไม่ได้จนกว่าจะแก้ไขสถานการณ์ในอุปกรณ์ไคลเอ็นต์

คุณดูสาเหตุที่บริการ Google Play ไม่พร้อมใช้งานในอุปกรณ์ไคลเอ็นต์ (และลองแก้ไข) ได้โดยใช้ฟังก์ชันใน google_play_services/availability.h

ตารางต่อไปนี้แสดงว่าต้องใช้บริการ Google Play ในอุปกรณ์ไคลเอ็นต์สำหรับผลิตภัณฑ์ Firebase ที่รองรับแต่ละรายการหรือไม่

ไลบรารี C++ ของ Firebase ต้องมีบริการ Google Play ในอุปกรณ์ไคลเอ็นต์ไหม
AdMob ไม่จำเป็น (โดยปกติ)
Analytics ไม่จำเป็น
Authentication ต้องระบุ
Cloud Firestore ต้องระบุ
Cloud Functions ต้องระบุ
Cloud Messaging ต้องระบุ
Cloud Storage ต้องระบุ
Dynamic Links ต้องระบุ
Realtime Database ต้องระบุ
Remote Config ต้องระบุ

AdMob และบริการ Google Play

Google Mobile Ads SDK สำหรับ Android ส่วนใหญ่ทำงานได้อย่างถูกต้อง โดยไม่ต้องใช้บริการ Google Play ในอุปกรณ์ไคลเอ็นต์ อย่างไรก็ตาม หากคุณใช้การอ้างอิง com.google.android.gms:play-services-ads-lite แทนการอ้างอิง com.google.firebase:firebase-ads มาตรฐานที่ระบุไว้ข้างต้น คุณจะต้องใช้บริการ Google Play

การเริ่มต้น AdMob จะแสดงผล kInitResultFailedMissingDependency ก็ต่อเมื่อทั้ง 2 เงื่อนไขต่อไปนี้เป็นจริง

  • บริการ Google Play ไม่พร้อมใช้งานในอุปกรณ์ไคลเอ็นต์
  • คุณกำลังใช้ com.google.android.gms:play-services-ads-lite

ตั้งค่าเวิร์กโฟลว์บนเดสก์ท็อป (เบต้า)

เมื่อสร้างเกม การทดสอบเกมบนแพลตฟอร์มเดสก์ท็อปมักจะง่ายกว่ามาก จากนั้นจึงค่อยนำไปใช้และทดสอบบนอุปกรณ์เคลื่อนที่ในภายหลัง เรามี SDK บางส่วนของ Firebase C++ ที่สามารถเรียกใช้ใน Windows, macOS, Linux และจากภายในโปรแกรมแก้ไข C++ เพื่อรองรับเวิร์กโฟลว์นี้

  1. สำหรับเวิร์กโฟลว์บนเดสก์ท็อป คุณต้องทำสิ่งต่อไปนี้

    1. กำหนดค่าโปรเจ็กต์ C++ สำหรับ CMake
    2. สร้างโปรเจ็กต์ Firebase
    3. ลงทะเบียนแอป (iOS หรือ Android) กับ Firebase
    4. เพิ่มไฟล์กำหนดค่า Firebase สำหรับแพลตฟอร์มอุปกรณ์เคลื่อนที่
  2. สร้างไฟล์กำหนดค่า Firebase เวอร์ชันเดสก์ท็อป

    • หากคุณเพิ่มไฟล์ google-services.json Android เมื่อเรียกใช้แอป Firebase จะค้นหาไฟล์ mobile นี้ จากนั้นจะสร้างไฟล์การกำหนดค่า Firebase desktop โดยอัตโนมัติ (google-services-desktop.json)

    • หากคุณเพิ่มไฟล์ GoogleService-Info.plist iOS - ก่อนที่จะเรียกใช้แอป คุณต้องแปลงไฟล์ mobile นี้เป็นไฟล์การกำหนดค่า Firebase desktop หากต้องการแปลงไฟล์ ให้เรียกใช้คำสั่งต่อไปนี้จากไดเรกทอรีเดียวกับไฟล์ GoogleService-Info.plist

      generate_xml_from_google_services_json.py --plist -i GoogleService-Info.plist

    ไฟล์การกำหนดค่าเดสก์ท็อปนี้มีรหัสโปรเจ็กต์ C++ ที่คุณป้อนใน เวิร์กโฟลว์การตั้งค่าคอนโซล Firebase ดูข้อมูลเพิ่มเติมเกี่ยวกับไฟล์การกำหนดค่าได้ที่ ทำความเข้าใจโปรเจ็กต์ Firebase

  3. เพิ่ม Firebase SDK ลงในโปรเจ็กต์ C++

    ขั้นตอนด้านล่างเป็นตัวอย่างวิธีเพิ่มผลิตภัณฑ์ Firebase ที่รองรับลงในโปรเจ็กต์ C++ ในตัวอย่างนี้ เราจะแสดงขั้นตอนการเพิ่ม Firebase Authentication และ Firebase Realtime Database

    1. ตั้งค่าFIREBASE_CPP_SDK_DIRตัวแปรสภาพแวดล้อมเป็นตำแหน่งของ Firebase C++ SDK ที่ไม่ได้ซิป

    2. เพิ่มเนื้อหาต่อไปนี้ลงในไฟล์ CMakeLists.txt ของโปรเจ็กต์ รวมถึงไลบรารีสำหรับ ผลิตภัณฑ์ Firebase ที่ต้องการใช้ เช่น หากต้องการใช้ Firebase Authentication และ Firebase Realtime Database ให้ทำดังนี้

      # Add Firebase libraries to the target using the function from the SDK.
      add_subdirectory(${FIREBASE_CPP_SDK_DIR} bin/ EXCLUDE_FROM_ALL)
      
      # The Firebase C++ library `firebase_app` is required,
      # and it must always be listed last.
      
      # Add the Firebase SDKs for the products you want to use in your app
      # For example, to use Firebase Authentication and Firebase Realtime Database
      set(firebase_libs firebase_auth firebase_database firebase_app)
      target_link_libraries(${target_name} "${firebase_libs}")
  4. เรียกใช้แอป C++

ไลบรารีที่พร้อมใช้งาน (เดสก์ท็อป)

Firebase C++ SDK มีการรองรับเวิร์กโฟลว์บนเดสก์ท็อป สำหรับฟีเจอร์บางส่วน ซึ่งช่วยให้ใช้ Firebase บางส่วนได้ใน บิลด์เดสก์ท็อปแบบสแตนด์อโลนบน Windows, macOS และ Linux

ผลิตภัณฑ์ Firebase การอ้างอิงไลบรารี (ใช้ CMake)
App Check firebase_app_check
(ต้องระบุ) firebase_app
Authentication firebase_auth
(ต้องระบุ) firebase_app
Cloud Firestore firebase_firestore
firebase_auth
firebase_app
Cloud Functions firebase_functions
(ต้องระบุ) firebase_app
Cloud Storage firebase_storage
(ต้องระบุ) firebase_app
Realtime Database firebase_database
(ต้องระบุ) firebase_app
Remote Config firebase_remote_config
(ต้องระบุ) firebase_app

Firebase มีไลบรารีเดสก์ท็อปที่เหลือเป็นการใช้งานแบบ Stub (ใช้งานไม่ได้) เพื่อความสะดวกเมื่อสร้างสำหรับ Windows, macOS และ Linux ดังนั้น คุณจึงไม่จำเป็นต้องคอมไพล์โค้ดแบบมีเงื่อนไขเพื่อกำหนดเป้าหมายไปยังเดสก์ท็อป

Realtime Database เดสก์ท็อป

Realtime Database SDK สำหรับเดสก์ท็อปใช้ REST เพื่อเข้าถึงฐานข้อมูลของคุณ ดังนั้นคุณต้องประกาศดัชนีที่คุณใช้กับ Query::OrderByChild() บนเดสก์ท็อป มิฉะนั้น Listener จะทำงานไม่สำเร็จ

ข้อมูลเพิ่มเติมสำหรับการตั้งค่าบนเดสก์ท็อป

ไลบรารีของ Windows

สำหรับ Windows ระบบจะระบุเวอร์ชันไลบรารีตามข้อมูลต่อไปนี้

  • แพลตฟอร์มการสร้าง: โหมด 32 บิต (x86) กับ 64 บิต (x64)
  • สภาพแวดล้อมรันไทม์ของ Windows: Multithreaded / MT เทียบกับ Multithreaded DLL /MD
  • เป้าหมาย: รุ่นที่เผยแพร่เทียบกับรุ่นแก้ไขข้อบกพร่อง

โปรดทราบว่าเราได้ทดสอบไลบรารีต่อไปนี้โดยใช้ Visual Studio 2015 และ 2017

เมื่อสร้างแอปเดสก์ท็อป C++ ใน Windows ให้ลิงก์ไลบรารี Windows SDK ต่อไปนี้กับโปรเจ็กต์ ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบของคอมไพเลอร์

ไลบรารี C++ ของ Firebase ทรัพยากร Dependency ของไลบรารี Windows SDK
App Check advapi32, ws2_32, crypt32
Authentication advapi32, ws2_32, crypt32
Cloud Firestore advapi32, ws2_32, crypt32, rpcrt4, ole32, shell32
Cloud Functions advapi32, ws2_32, crypt32, rpcrt4, ole32
Cloud Storage advapi32, ws2_32, crypt32
Realtime Database advapi32, ws2_32, crypt32, iphlpapi, psapi, userenv
Remote Config advapi32, ws2_32, crypt32, rpcrt4, ole32

ไลบรารี macOS

สำหรับ macOS (Darwin) จะมีไลบรารีเวอร์ชันสำหรับแพลตฟอร์ม 64 บิต (x86_64) นอกจากนี้ เรายังมีเฟรมเวิร์กเพื่ออำนวยความสะดวกให้คุณด้วย

โปรดทราบว่าเราได้ทดสอบไลบรารี macOS โดยใช้ Xcode 16.2 แล้ว

เมื่อสร้างแอปเดสก์ท็อป C++ ใน macOS ให้ลิงก์สิ่งต่อไปนี้กับโปรเจ็กต์

  • pthread ไลบรารีของระบบ
  • CoreFoundation เฟรมเวิร์กระบบ macOS
  • Foundation เฟรมเวิร์กระบบ macOS
  • Security เฟรมเวิร์กระบบ macOS
  • GSS เฟรมเวิร์กระบบ macOS
  • Kerberos เฟรมเวิร์กระบบ macOS
  • SystemConfiguration เฟรมเวิร์กระบบ macOS

ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบของคอมไพเลอร์

ไลบรารี Linux

สำหรับ Linux จะมีเวอร์ชันไลบรารีสำหรับแพลตฟอร์ม 32 บิต (i386) และ 64 บิต (x86_64)

โปรดทราบว่าเราทดสอบไลบรารี Linux โดยใช้ GCC 4.8.0, GCC 7.2.0 และ Clang 5.0 ใน Ubuntu

เมื่อสร้างแอปเดสก์ท็อป C++ ใน Linux ให้ลิงก์pthreadไลบรารีระบบกับโปรเจ็กต์ ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบของคอมไพเลอร์ หากคุณสร้างด้วย GCC 5 ขึ้นไป ให้กำหนด -D_GLIBCXX_USE_CXX11_ABI=0

ขั้นตอนถัดไป