เพิ่มประสิทธิภาพเกม 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 ต่อไปนี้อย่างเต็มประสิทธิภาพ
เลือกบัญชี Google Analytics ที่มีอยู่หรือสร้างบัญชีใหม่
หากคุณสร้างบัญชีใหม่ ให้เลือกตำแหน่งการรายงาน Analytics แล้วยอมรับการตั้งค่าการแชร์ข้อมูลและข้อกำหนด Google Analytics สำหรับโปรเจ็กต์
-
คลิกสร้างโปรเจ็กต์ (หรือเพิ่ม 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
)โปรดทราบว่าค่าชื่อแพ็กเกจจะคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ และคุณจะเปลี่ยนแปลงค่าสำหรับแอป Firebase ของ Android นี้ไม่ได้หลังจากลงทะเบียนกับโปรเจ็กต์ Firebase แล้ว
(ไม่บังคับ) ป้อนข้อมูลอื่นๆ ของแอป ได้แก่ ชื่อเล่นของแอปและใบรับรองการแก้ไขข้อบกพร่อง SHA-1
ชื่อเล่นแอปและใบรับรองการลงนาม SHA-1 สำหรับการแก้ไขข้อบกพร่องใช้ใน Firebase อย่างไร
ชื่อเล่นของแอป: ตัวระบุภายในเพื่อความสะดวกที่คุณจะมองเห็นได้ในคอนโซล Firebase เท่านั้น
ใบรับรองการแก้ไขข้อบกพร่อง SHA-1: Firebase Authentication (เมื่อใช้Google Sign In หรือการลงชื่อเข้าใช้ด้วยหมายเลขโทรศัพท์) และ Firebase Dynamic Links กำหนดให้ต้องมีแฮช SHA-1
คลิกลงทะเบียนแอป
ขั้นตอนที่ 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.2' // Google Services plugin implementation 'com.google.android.gms:18.5.0' } } 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 ไว้ที่ใดก็ได้ที่คุณสะดวก
SDK Firebase C++ ไม่ได้ออกแบบมาเพื่อแพลตฟอร์มใดแพลตฟอร์มหนึ่งโดยเฉพาะ แต่มีไลบรารีสำหรับแพลตฟอร์มที่เฉพาะเจาะจง
ในไฟล์
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 ไว้ที่ใดก็ได้ที่คุณสะดวก
SDK Firebase C++ ไม่ได้เจาะจงแพลตฟอร์ม แต่มีไลบรารีที่เจาะจงแพลตฟอร์ม
-
เปิดไฟล์
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 ที่ระบุไว้ทั้งหมดสำหรับผลิตภัณฑ์ 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'
|
ไลบรารีที่ใช้ได้
ดูข้อมูลเพิ่มเติมเกี่ยวกับไลบรารี Firebase C++ ในเอกสารอ้างอิงและในรุ่น 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 Services ดำเนินการเมื่อสร้างแอปพลิเคชัน Android
หากคุณไม่ได้สร้างโดยใช้ Gradle (เช่น คุณใช้ ndk-build, makefile, Visual Studio ฯลฯ) คุณสามารถใช้สคริปต์นี้เพื่อสร้างทรัพยากรสตริงของ Android โดยอัตโนมัติ
ProGuard
ระบบการสร้าง Android จำนวนมากใช้ ProGuard สำหรับการสร้างในโหมดรุ่นเพื่อลดขนาดแอปพลิเคชันและปกป้องซอร์สโค้ด Java
หากใช้ ProGuard คุณจะต้องเพิ่มไฟล์ใน libs/android/*.pro
ที่สอดคล้องกับไลบรารี Firebase C++ ที่คุณใช้อยู่ในการกําหนดค่า 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
ไลบรารี Firebase C++ ส่วนใหญ่กำหนดให้ต้องมีบริการ Google Play ในอุปกรณ์ Android ของลูกค้า หากไลบรารี Firebase C++ แสดงผลเป็น kInitResultFailedMissingDependency
ในการเริ่มต้น แสดงว่าบริการ Google Play ไม่พร้อมใช้งานในอุปกรณ์ไคลเอ็นต์ (ซึ่งหมายความว่าต้องอัปเดต กลับมาเปิดใช้งาน แก้ไขสิทธิ์ ฯลฯ) คุณใช้ไลบรารี Firebase ไม่ได้จนกว่าจะแก้ไขสถานการณ์ในอุปกรณ์ไคลเอ็นต์
คุณสามารถดูสาเหตุที่บริการ Google Play ไม่พร้อมใช้งานในอุปกรณ์ไคลเอ็นต์ (และพยายามแก้ไข) โดยใช้ฟังก์ชันใน google_play_services/availability.h
ตารางต่อไปนี้แสดงว่าต้องใช้บริการ Google Play ในอุปกรณ์ไคลเอ็นต์สำหรับผลิตภัณฑ์ Firebase ที่รองรับแต่ละรายการหรือไม่
ไลบรารี Firebase C++ | ต้องใช้บริการ 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 ในอุปกรณ์ไคลเอ็นต์ อย่างไรก็ตาม หากคุณใช้ Dependency แทน com.google.firebase:firebase-ads
Dependency มาตรฐานที่ระบุไว้ข้างต้น คุณจำเป็นต้องใช้บริการ Google Playcom.google.android.gms:play-services-ads-lite
การจัดเตรียมค่าเริ่มต้น AdMob จะแสดงผลเป็น kInitResultFailedMissingDependency
เท่านั้น
เมื่อทั้ง 2 เงื่อนไขต่อไปนี้เป็นจริง
- บริการ Google Play ไม่พร้อมใช้งานในอุปกรณ์ไคลเอ็นต์
- คุณกำลังใช้
com.google.android.gms:play-services-ads-lite
ตั้งค่าเวิร์กโฟลว์บนเดสก์ท็อป (เบต้า)
เมื่อสร้างเกม มักจะง่ายกว่ามากที่จะทดสอบเกมบนแพลตฟอร์มเดสก์ท็อปก่อน จากนั้นจึงนำไปใช้งานและทดสอบบนอุปกรณ์เคลื่อนที่ในขั้นตอนการพัฒนาในภายหลัง เราให้บริการชุดย่อยของ Firebase C++ SDK ที่ทำงานได้ใน 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 เดสก์ท็อป หากต้องการแปลงไฟล์ ให้เรียกใช้คําสั่งต่อไปนี้จากไดเรกทอรีเดียวกับไฟล์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 มีไลบรารีเดสก์ท็อปที่เหลือเป็นการใช้งานสแต็บ (ใช้งานไม่ได้) เพื่ออำนวยความสะดวกในการสร้างสำหรับ Windows, macOS และ Linux คุณจึงไม่ต้องคอมไพล์โค้ดแบบมีเงื่อนไขเพื่อกำหนดเป้าหมายไปยังเดสก์ท็อป
Realtime Database เดสก์ท็อป
Realtime Database SDK สําหรับเดสก์ท็อปใช้ REST เพื่อเข้าถึงฐานข้อมูล คุณจึงต้องประกาศดัชนีที่ใช้กับ Query::OrderByChild()
ในเดสก์ท็อป ไม่เช่นนั้น โปรแกรมฟังจะใช้งานไม่ได้
ข้อมูลเพิ่มเติมสำหรับการตั้งค่าเดสก์ท็อป
ไลบรารีของ Windows
สำหรับ Windows เวอร์ชันของไลบรารีจะขึ้นอยู่กับข้อมูลต่อไปนี้
- แพลตฟอร์มการสร้าง: โหมด 32 บิต (x86) กับ 64 บิต (x64)
- สภาพแวดล้อมรันไทม์ของ Windows: หลายเธรด / MT เทียบกับ DLL แบบหลายเธรด /MD
- เป้าหมาย: เวอร์ชันที่ใช้งานจริงเทียบกับเวอร์ชันแก้ไขข้อบกพร่อง
โปรดทราบว่าไลบรารีต่อไปนี้ได้รับการทดสอบโดยใช้ Visual Studio 2015 และ 2017
เมื่อสร้างแอปเดสก์ท็อป C++ ใน Windows ให้ลิงก์ไลบรารี Windows SDK ต่อไปนี้กับโปรเจ็กต์ ดูข้อมูลเพิ่มเติมในเอกสารประกอบของคอมไพเลอร์
ไลบรารี Firebase C++ | ทรัพยากร 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 13.3.1
เมื่อสร้างแอปเดสก์ท็อป 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
ขั้นตอนถัดไป
เตรียมเปิดตัวแอป
- ตั้งค่าการแจ้งเตือนเกี่ยวกับงบประมาณสำหรับโปรเจ็กต์ในคอนโซล Google Cloud
- ตรวจสอบแดชบอร์ดการใช้งานและการเรียกเก็บเงินในคอนโซล Firebase เพื่อดูภาพรวมการใช้งานโปรเจ็กต์ในบริการ Firebase หลายรายการ
- ตรวจสอบรายการตรวจสอบการเปิดตัว Firebase