ยกระดับเกม 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
ตรวจสอบว่าโปรเจ็กต์เป็นไปตามข้อกำหนดต่อไปนี้
กำหนดเป้าหมาย API ระดับ 21 (Lollipop) ขึ้นไป
ใช้ Gradle และกำหนดค่าด้วย CMake
ตั้งค่าอุปกรณ์จริงหรือใช้โปรแกรมจำลองเพื่อเรียกใช้แอป
โปรแกรมจำลอง ต้องใช้รูปภาพโปรแกรมจำลองที่มี Google Play
ไลบรารี C++ บางรายการต้องใช้บริการ Google Play ในอุปกรณ์ไคลเอ็นต์ โปรดดูรายการในหน้านี้
ลงชื่อเข้าใช้ Firebase ด้วยบัญชี Google
ขั้นตอนที่ 2: สร้างโปรเจ็กต์ Firebase
ก่อนที่จะเพิ่ม Firebase ลงในโปรเจ็กต์ C++ ได้ คุณต้องสร้างโปรเจ็กต์ Firebase เพื่อเชื่อมต่อกับโปรเจ็กต์ C++ ดูข้อมูลเพิ่มเติมเกี่ยวกับโปรเจ็กต์ Firebase ได้ที่ทำความเข้าใจโปรเจ็กต์ Firebase
สร้างโปรเจ็กต์ Firebase
-
ในFirebase คอนโซล ให้คลิกเพิ่มโปรเจ็กต์
-
หากต้องการเพิ่มทรัพยากร Firebase ลงในโปรเจ็กต์ที่มีอยู่ Google Cloud ให้ป้อนชื่อโปรเจ็กต์หรือเลือกจากเมนูแบบเลื่อนลง
-
หากต้องการสร้างโปรเจ็กต์ใหม่ ให้ป้อนชื่อโปรเจ็กต์ นอกจากนี้ คุณยัง เลือกแก้ไขรหัสโปรเจ็กต์ที่แสดงใต้ชื่อโปรเจ็กต์ได้ด้วย
-
-
หากได้รับแจ้ง ให้อ่านและยอมรับข้อกำหนดของ Firebase
-
คลิกต่อไป
-
(ไม่บังคับ) ตั้งค่า Google Analytics สำหรับโปรเจ็กต์ ซึ่งจะ ช่วยให้ได้รับประสบการณ์การใช้งานที่ดียิ่งขึ้นเมื่อใช้ผลิตภัณฑ์ Firebase ต่อไปนี้ Firebase A/B Testing Cloud Messaging Crashlytics In-App Messaging และ Remote Config (รวมถึงการปรับเปลี่ยนในแบบของคุณ)
เลือกบัญชี Google Analytics ที่มีอยู่ หรือสร้างบัญชีใหม่ หากสร้างบัญชีใหม่ ให้เลือกAnalyticsสถานที่ตั้งการรายงาน จากนั้นยอมรับการตั้งค่าการแชร์ข้อมูลและGoogle Analyticsข้อกำหนดสำหรับ โปรเจ็กต์
-
คลิกสร้างโปรเจ็กต์ (หรือเพิ่ม Firebase หากคุณเพิ่ม Firebase ไปยังโปรเจ็กต์ Google Cloud ที่มีอยู่)
Firebase จะจัดสรรทรัพยากรสำหรับโปรเจ็กต์ Firebase โดยอัตโนมัติ เมื่อ กระบวนการเสร็จสมบูรณ์ ระบบจะนำคุณไปยังหน้าภาพรวมของโปรเจ็กต์ Firebase ในFirebaseคอนโซล
ขั้นตอนที่ 3: ลงทะเบียนแอปกับ Firebase
หากต้องการใช้ Firebase ในแอป Android คุณต้องลงทะเบียนแอปกับโปรเจ็กต์ Firebase การลงทะเบียนแอปมักเรียกว่า "การเพิ่ม" แอปไปยังโปรเจ็กต์
ไปที่คอนโซล Firebase
ที่กึ่งกลางหน้าภาพรวมโปรเจ็กต์ ให้คลิกไอคอน Android (
) หรือเพิ่มแอปเพื่อเปิดเวิร์กโฟลว์การตั้งค่าป้อนชื่อแพ็กเกจของแอปในช่องชื่อแพ็กเกจ Android
ชื่อแพ็กเกจคืออะไรและดูได้จากที่ใด
ชื่อแพ็กเกจ จะระบุแอปของคุณในอุปกรณ์และ Google Play Store ได้อย่างไม่ซ้ำกัน
โดยทั่วไปแล้ว ชื่อแพ็กเกจมักจะเรียกว่ารหัสแอปพลิเคชัน
ค้นหาชื่อแพ็กเกจของแอปในไฟล์ Gradle ของโมดูล (ระดับแอป) ซึ่งโดยปกติคือ
app/build.gradle
(ตัวอย่างชื่อแพ็กเกจ:com.yourcompany.yourproject
)โปรดทราบว่าค่าชื่อแพ็กเกจจะคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ และคุณจะเปลี่ยนค่านี้สำหรับแอป Android ใน Firebase ไม่ได้หลังจากที่ลงทะเบียนกับโปรเจ็กต์ Firebase แล้ว
(ไม่บังคับ) ป้อนข้อมูลแอปอื่นๆ ดังนี้ ชื่อเล่นของแอปและ SHA-1 ของใบรับรองการลงนามสำหรับแก้ไขข้อบกพร่อง
Firebase ใช้ชื่อเล่นของแอปและ SHA-1 ของใบรับรองการลงนามสำหรับแก้ไขข้อบกพร่องอย่างไร
ชื่อเล่นของแอป: ตัวระบุภายในที่สะดวกซึ่งคุณจะเห็นได้ในคอนโซล Firebase เท่านั้น
SHA-1 ของใบรับรองการลงนามในการแก้ไขข้อบกพร่อง: แฮช SHA-1 ต้องใช้โดย Firebase Authentication (เมื่อใช้ ลงชื่อเข้าใช้ด้วย Google หรือ ลงชื่อเข้าใช้ด้วยหมายเลขโทรศัพท์) และ Firebase Dynamic Links
คลิกลงทะเบียนแอป
ขั้นตอนที่ 4: เพิ่มไฟล์กำหนดค่า Firebase
คลิกดาวน์โหลด google-services.json เพื่อรับไฟล์กำหนดค่า Firebase Android
คุณควรรู้อะไรบ้างเกี่ยวกับไฟล์การกำหนดค่านี้
ไฟล์การกำหนดค่า Firebase จะมีตัวระบุที่ไม่ซ้ำกันและไม่เป็นความลับสำหรับ โปรเจ็กต์และแอปของคุณ หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับไฟล์การกำหนดค่านี้ โปรดไปที่ทำความเข้าใจโปรเจ็กต์ Firebase
คุณดาวน์โหลดไฟล์กำหนดค่า Firebase อีกครั้งได้ทุกเมื่อ
โปรดตรวจสอบว่าชื่อไฟล์การกำหนดค่าไม่มีอักขระต่อท้ายเพิ่มเติม เช่น
(2)
เปิดโปรเจ็กต์ C++ ใน IDE แล้วเพิ่มไฟล์การกำหนดค่าลงในโปรเจ็กต์โดยทำดังนี้
การสร้าง Gradle - เพิ่มไฟล์การกำหนดค่าลงในไดเรกทอรีเดียวกับไฟล์
build.gradle
ระดับบนสุดระบบบิลด์อื่นๆ - ดูระบบบิลด์ที่กำหนดเองด้านล่างเพื่อสร้างทรัพยากรสตริง Android
(การสร้าง Gradle เท่านั้น) หากต้องการเปิดใช้บริการ Firebase ในโปรเจ็กต์ C++ ให้เพิ่มปลั๊กอิน google-services ลงในไฟล์
build.gradle
ระดับบนสุดเพิ่มกฎเพื่อรวมปลั๊กอิน 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 // ... } }
ใช้ปลั๊กอิน Gradle ของบริการของ Google โดยทำดังนี้
apply plugin: 'com.android.application' // Add the following line: apply plugin: 'com.google.gms.google-services' // Google Services plugin android { // ... }
คุณทำงานตั้งค่าในFirebaseคอนโซลเสร็จแล้ว ดำเนินการต่อเพื่อเพิ่ม Firebase C++ SDK ด้านล่าง
ขั้นตอนที่ 5: เพิ่ม Firebase C++ SDK
ขั้นตอนในส่วนนี้เป็นตัวอย่างวิธีเพิ่มผลิตภัณฑ์ Firebase ที่รองรับลงในโปรเจ็กต์ Firebase C++
ดาวน์โหลด Firebase C++ SDK แล้วแตกไฟล์ SDK ไว้ที่ใดก็ได้ที่คุณสะดวก
Firebase C++ SDK ไม่ได้เจาะจงแพลตฟอร์ม แต่มีไลบรารีที่เจาะจงแพลตฟอร์ม
ในไฟล์
gradle.properties
ของโปรเจ็กต์ ให้ระบุตำแหน่งของ SDK ที่ แตกไฟล์แล้วsystemProp.firebase_cpp_sdk.dir=
full-path-to-SDK เพิ่มเนื้อหาต่อไปนี้ลงในไฟล์
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"
เพิ่มเนื้อหาต่อไปนี้ลงในไฟล์ 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 }
เพิ่มเนื้อหาต่อไปนี้ลงในไฟล์
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}")
ซิงค์แอปเพื่อให้ทรัพยากร Dependency ทั้งหมดมีเวอร์ชันที่จำเป็น
หากคุณเพิ่ม Analytics ให้เรียกใช้แอปเพื่อส่งการยืนยันไปยัง Firebase ว่าคุณผสานรวม Firebase เรียบร้อยแล้ว ไม่เช่นนั้น ให้ข้าม ขั้นตอนการยืนยัน
บันทึกของอุปกรณ์จะแสดงการยืนยัน Firebase ว่าการเริ่มต้น เสร็จสมบูรณ์แล้ว หากคุณเรียกใช้แอปในโปรแกรมจำลองที่มีสิทธิ์เข้าถึงเครือข่าย Firebaseคอนโซลจะแจ้งให้คุณทราบว่าการเชื่อมต่อแอปเสร็จสมบูรณ์แล้ว
เรียบร้อยแล้ว แอป C++ ของคุณได้รับการลงทะเบียนและกำหนดค่าให้ใช้บริการ Firebase แล้ว
(ทางเลือกที่ไม่บังคับ) ใช้ ndk-build เพื่อเพิ่ม SDK
- ตรวจสอบว่าคุณมี Android NDK v10d ขึ้นไป
ดาวน์โหลด Firebase C++ SDK แล้วแตกไฟล์ SDK ไว้ที่ใดก็ได้ที่คุณสะดวก
Firebase C++ SDK ไม่ได้เจาะจงแพลตฟอร์ม แต่มีไลบรารีที่เจาะจงแพลตฟอร์ม
-
เปิดไฟล์
local.properties
แล้วทำดังนี้- ตั้งค่าตัวแปร
firebase_cpp_sdk.dir
เป็นตำแหน่งของ Firebase C++ SDK ที่ไม่ได้ซิป - ตั้งค่าตัวแปร
ndk.dir
เป็นตำแหน่งของ Android NDK
- ตั้งค่าตัวแปร
-
หากต้องการใช้การรองรับ ndkBuild ในตัวของ Gradle ให้สร้างไดเรกทอรี
jni
ภายในไดเรกทอรีระดับบนสุด จากนั้นสร้างไฟล์make
ต่อไปนี้-
สร้างไฟล์
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
-
สร้างไฟล์
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)
-
-
เปิดไฟล์
build.gradle
ระดับบนสุด แล้วทำตามขั้นตอนต่อไปนี้-
เพิ่มทรัพยากร Dependency สำหรับผลิตภัณฑ์ Firebase ที่ต้องการใช้ เช่น หากต้องการใช้ Analytics ให้ทำดังนี้
dependencies { implementation 'com.google.firebase:firebase-analytics:21.0.0' }
-
เพิ่มบรรทัดต่อไปนี้เพื่อให้โปรเจ็กต์ใช้การรองรับ 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) } } }
-
ไลบรารีที่พร้อมใช้งานสำหรับ Android (ใช้ ndk-build)
ผลิตภัณฑ์ 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++ เพื่อรองรับเวิร์กโฟลว์นี้
สำหรับเวิร์กโฟลว์บนเดสก์ท็อป คุณต้องทำสิ่งต่อไปนี้
- กำหนดค่าโปรเจ็กต์ C++ สำหรับ CMake
- สร้างโปรเจ็กต์ Firebase
- ลงทะเบียนแอป (iOS หรือ Android) กับ Firebase
- เพิ่มไฟล์กำหนดค่า Firebase สำหรับแพลตฟอร์มอุปกรณ์เคลื่อนที่
สร้างไฟล์กำหนดค่า 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
เพิ่ม Firebase SDK ลงในโปรเจ็กต์ C++
ขั้นตอนด้านล่างเป็นตัวอย่างวิธีเพิ่มผลิตภัณฑ์ Firebase ที่รองรับลงในโปรเจ็กต์ C++ ในตัวอย่างนี้ เราจะแสดงขั้นตอนการเพิ่ม Firebase Authentication และ Firebase Realtime Database
ตั้งค่า
FIREBASE_CPP_SDK_DIR
ตัวแปรสภาพแวดล้อมเป็นตำแหน่งของ Firebase C++ SDK ที่ไม่ได้ซิปเพิ่มเนื้อหาต่อไปนี้ลงในไฟล์
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}")
เรียกใช้แอป 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
เฟรมเวิร์กระบบ macOSFoundation
เฟรมเวิร์กระบบ macOSSecurity
เฟรมเวิร์กระบบ macOSGSS
เฟรมเวิร์กระบบ macOSKerberos
เฟรมเวิร์กระบบ macOSSystemConfiguration
เฟรมเวิร์กระบบ 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
ขั้นตอนถัดไป
สำรวจ SDK โอเพนซอร์สใน GitHub
เตรียมพร้อมเปิดตัวแอป
- ตั้งค่าการแจ้งเตือน งบประมาณ สำหรับโปรเจ็กต์ในGoogle Cloudคอนโซล
- ตรวจสอบแดชบอร์ดการใช้งานและการเรียกเก็บเงินในFirebaseคอนโซลเพื่อดูภาพรวมการใช้งานของโปรเจ็กต์ในบริการ Firebase หลายรายการ
- ตรวจสอบรายการตรวจสอบการเปิดตัว Firebase