Ulepsz swoje gry w C++ za pomocą naszych pakietów Firebase C++ SDK, które zapewniają interfejs C++ na pakietach Firebase SDK.
Uzyskuj dostęp do Firebase w całości z poziomu kodu C++ bez konieczności pisania kodu natywnego dla platformy. Pakiet Firebase SDK tłumaczy też wiele idiomów specyficznych dla języka, których używa Firebase, na interfejs bardziej znany deweloperom C++.
Więcej informacji o ulepszaniu gier za pomocą Firebase znajdziesz na naszej stronie poświęconej grom w Firebase.
Czy Firebase jest już dodany do projektu C++? Upewnij się, że używasz najnowszej wersji Firebase C++ SDK.
Wymagania wstępne
Zainstaluj preferowany edytor lub IDE, np. Android Studio, IntelliJ lub VS Code.
Pobierz pakiet Android SDK.
Upewnij się, że Twój projekt spełnia te wymagania:
kierować aplikację co najmniej na poziom API 21 (Lollipop);
Korzysta z Gradle i jest skonfigurowany za pomocą CMake
Skonfiguruj urządzenie fizyczne lub użyj emulatora, aby uruchomić aplikację.
Zaloguj się w Firebase, używając konta Google.
Krok 2. Utwórz projekt Firebase
Zanim dodasz Firebase do projektu C++, musisz utworzyć projekt Firebase, aby połączyć go z projektem C++. Więcej informacji o projektach Firebase znajdziesz w artykule Projekty Firebase.
Krok 3. Zarejestruj aplikację w Firebase
Aby korzystać z Firebase w aplikacji na Androida, musisz zarejestrować aplikację w projekcie Firebase. Rejestracja aplikacji jest często nazywana „dodawaniem” aplikacji do projektu.
Otwórz Firebasekonsolę.
W centrum strony „Opis” projektu kliknij ikonę Android
lub Dodaj aplikację, aby uruchomić proces konfiguracji.Wpisz nazwę pakietu aplikacji w polu Nazwa pakietu na Androida.
(Opcjonalnie) wpisz pseudonim aplikacji, czyli wewnętrzny identyfikator ułatwiający rozpoznawanie aplikacji, który jest widoczny tylko dla Ciebie w Firebase konsoli.
Kliknij Zarejestruj aplikację.
Krok 4. Dodaj plik konfiguracyjny Firebase
Kliknij Pobierz plik google-services.json, aby uzyskać plik konfiguracyjny Firebase Android.
Otwórz projekt C++ w IDE, a następnie dodaj do niego plik konfiguracyjny:
Kompilacje Gradle – dodaj plik konfiguracyjny do tego samego katalogu co plik
build.gradle
najwyższego poziomu.Inne systemy kompilacji – aby wygenerować zasoby tekstowe Androida, zapoznaj się z sekcją Niestandardowe systemy kompilacji poniżej.
(Tylko kompilacje Gradle) Aby włączyć usługi Firebase w projekcie C++, dodaj wtyczkę google-services do pliku
build.gradle
najwyższego poziomu.Dodaj reguły, aby uwzględnić wtyczkę Gradle usług Google. Sprawdź, czy masz też repozytorium Google Maven.
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.4' // Google Services plugin implementation 'com.google.android.gms:18.9.0' } } allprojects { // ... repositories { // Check that you have the following line (if not, add it): google() // Google's Maven repository // ... } }
Zastosuj wtyczkę Gradle do usług Google:
apply plugin: 'com.android.application' // Add the following line: apply plugin: 'com.google.gms.google-services' // Google Services plugin android { // ... }
Zadania konfiguracyjne w konsoli Firebase zostały wykonane. Przejdź do sekcji Dodawanie pakietów SDK Firebase C++ poniżej.
Krok 5. Dodaj pakiety SDK Firebase C++
Czynności opisane w tej sekcji pokazują, jak dodać obsługiwane usługi Firebase do projektu Firebase C++.
Pobierz Firebase C++ SDK, a następnie rozpakuj go w wygodnym miejscu.
Pakiet SDK Firebase C++ nie jest przeznaczony dla konkretnej platformy, ale zawiera biblioteki specyficzne dla poszczególnych platform.
W pliku
gradle.properties
projektu określ lokalizację rozpakowanego pakietu SDK:systemProp.firebase_cpp_sdk.dir=full-path-to-SDK
Dodaj do pliku
settings.gradle
projektu te wiersze: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"
Do pliku Gradle modułu (na poziomie aplikacji) (zwykle
app/build.gradle
) dodaj poniższą zawartość.
Uwzględnij zależności bibliotek w przypadku usług Firebase, których chcesz używać w aplikacji.Włączono: Analytics
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 }
Nie włączono Analytics
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 }
Do pliku
CMakeLists.txt
projektu dodaj te wiersze:
Dołącz biblioteki usług Firebase, których chcesz używać w aplikacji.Włączono: Analytics
# 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}")
Nie włączono Analytics
# 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}")
Zsynchronizuj aplikację, aby wszystkie zależności na pewno miały odpowiednie wersje.
Jeśli dodasz Analytics, uruchom aplikację, aby wysłać do Firebase weryfikację, że udało Ci się zintegrować Firebase. W przeciwnym razie możesz pominąć krok weryfikacji.
W logach urządzenia pojawi się informacja o weryfikacji Firebase, że inicjowanie zostało zakończone. Jeśli aplikacja została uruchomiona na emulatorze z dostępem do sieci, Firebasekonsola powiadomi Cię o zakończeniu połączenia z aplikacją.
Wszystko gotowe. Aplikacja w C++ jest zarejestrowana i skonfigurowana pod kątem korzystania z usług Firebase.
Dostępne biblioteki
Więcej informacji o bibliotekach Firebase w C++ znajdziesz w dokumentacji i w naszej wersji pakietu SDK open source w GitHub.
Dostępne biblioteki na Androida (z użyciem CMake)
Pamiętaj, że biblioteki C++ na platformy Apple są wymienione w wersji tej strony konfiguracji dotyczącej platform Apple (iOS+).
Usługa Firebase | Odniesienia do biblioteki ( firebaseCpp.dependencies w przypadku pliku build.gradle ) |
Odniesienia do biblioteki ( firebase_libs w przypadku pliku CMakeLists.txt ) |
---|---|---|
AdMob | admob |
firebase_admob (wymagany) firebase_analytics (wymagany) firebase_app
|
Analytics | analytics |
firebase_analytics (wymagane) firebase_app
|
App Check | appCheck |
firebase_app_check (wymagane) firebase_app
|
Authentication | auth |
firebase_auth (wymagane) firebase_app
|
Cloud Firestore | firestore |
firebase_firestore (wymagany) firebase_auth (wymagany) firebase_app
|
Cloud Functions | functions |
firebase_functions (wymagane) firebase_app
|
Cloud Messaging | messaging |
firebase_messaging (zalecane) firebase_analytics (wymagane) firebase_app
|
Cloud Storage | storage |
firebase_storage (wymagane) firebase_app
|
Dynamic Links | dynamicLinks |
firebase_dynamic_links (zalecane) firebase_analytics (wymagane) firebase_app
|
Realtime Database | database |
firebase_database (wymagane) firebase_app
|
Remote Config | remoteConfig |
firebase_remote_config (zalecane) firebase_analytics (wymagane) firebase_app
|
Dodatkowe informacje o konfiguracji na urządzeniach mobilnych
Uzyskiwanie raportów o awariach NDK
Firebase Crashlytics obsługuje raportowanie awarii w przypadku aplikacji korzystających z bibliotek natywnych Androida. Więcej informacji znajdziesz w artykule Uzyskiwanie raportów o awariach NDK na Androidzie.
Niestandardowe systemy kompilacji
Firebase udostępnia skrypt generate_xml_from_google_services_json.py
do konwertowania zasobów google-services.json
na zasoby .xml
, które możesz uwzględnić w projekcie. Ten skrypt stosuje taką samą transformację jak wtyczka Gradle usług Google Play podczas tworzenia aplikacji na Androida.
Jeśli nie używasz Gradle do kompilacji (np. używasz ndk-build, makefiles, Visual Studio itp.), możesz użyć tego skryptu do zautomatyzowania generowania zasobów ciągów tekstowych Androida.
ProGuard
Wiele systemów kompilacji na Androida używa ProGuarda w przypadku kompilacji w trybie wydania, aby zmniejszyć rozmiar aplikacji i chronić kod źródłowy w Javie.
Jeśli używasz ProGuard, musisz dodać pliki w libs/android/*.pro
odpowiadające bibliotekom Firebase C++, których używasz w konfiguracji ProGuard.
Jeśli na przykład używasz Gradle, a w pliku Google Analytics masz wpis build.gradle
, będzie on wyglądać tak:
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 } } }
Wymagania dotyczące Usług Google Play
Większość bibliotek Firebase C++ wymaga, aby na urządzeniu klienta z Androidem były zainstalowane usługi Google Play. Jeśli biblioteka Firebase C++ zwraca wartość
kInitResultFailedMissingDependency
podczas inicjowania, oznacza to, że Usługi Google Play nie są dostępne na urządzeniu
klienta (co oznacza, że trzeba je zaktualizować, ponownie aktywować, naprawić uprawnienia
itp.). Biblioteki Firebase nie można używać, dopóki sytuacja na urządzeniu klienta nie zostanie poprawiona.
Możesz dowiedzieć się, dlaczego Usługi Google Play są niedostępne na urządzeniu klienta (i spróbować to naprawić), korzystając z funkcji w google_play_services/availability.h
.
W tabeli poniżej znajdziesz informacje o tym, czy w przypadku poszczególnych obsługiwanych usług Firebase na urządzeniu klienta wymagane są usługi Google Play.
Biblioteka Firebase C++ | Czy na urządzeniu klienta wymagane są usługi Google Play? |
---|---|
AdMob | Niewymagane (zwykle) |
Analytics | Niewymagane |
Authentication | Wymagane |
Cloud Firestore | Wymagane |
Cloud Functions | Wymagane |
Cloud Messaging | Wymagane |
Cloud Storage | Wymagane |
Dynamic Links | Wymagane |
Realtime Database | Wymagane |
Remote Config | Wymagane |
AdMob i Usługi Google Play
Większość wersji Google Mobile Adspakietu SDK na Androida może działać prawidłowo bez Usług Google Play na urządzeniu klienta. Jeśli jednak używasz zależności com.google.android.gms:play-services-ads-lite
zamiast standardowej zależności com.google.firebase:firebase-ads
wymienionej powyżej, usługi Google Play są wymagane.
Inicjowanie AdMob zwróci wartość kInitResultFailedMissingDependency
tylko wtedy, gdy spełnione są oba te warunki:
- Usługi Google Play są niedostępne na urządzeniu klienta.
- Używasz
com.google.android.gms:play-services-ads-lite
.
Konfigurowanie przepływu pracy na komputerze (beta)
Podczas tworzenia gry często łatwiej jest najpierw przetestować ją na platformach desktopowych, a potem wdrożyć i przetestować na urządzeniach mobilnych w późniejszej fazie rozwoju. Aby obsługiwać ten proces, udostępniamy podzbiór pakietów SDK Firebase C++, które mogą działać w systemach Windows, macOS i Linux oraz w edytorze C++.
W przypadku przepływów pracy na komputerze musisz wykonać te czynności:
- Skonfiguruj projekt C++ pod kątem CMake.
- Tworzenie projektu Firebase
- Zarejestruj aplikację (na iOS lub Androida) w Firebase
- Dodawanie pliku konfiguracyjnego Firebase na platformę mobilną
Utwórz wersję na komputery pliku konfiguracyjnego Firebase:
Jeśli dodasz plik
google-services.json
na Androida – gdy uruchomisz aplikację, Firebase znajdzie ten plik mobilny, a potem automatycznie wygeneruje plik konfiguracyjny Firebase na komputery (google-services-desktop.json
).Jeśli dodano plik
GoogleService-Info.plist
na iOS – przed uruchomieniem aplikacji musisz przekonwertować ten plik mobilny na plik konfiguracyjny Firebase na komputery. Aby przekonwertować plik, uruchom to polecenie w tym samym katalogu co plikGoogleService-Info.plist
:generate_xml_from_google_services_json.py --plist -i GoogleService-Info.plist
Ten plik konfiguracyjny na komputerze zawiera identyfikator projektu C++, który został wpisany w Firebase podczas konfigurowania konsoli. Więcej informacji o plikach konfiguracyjnych znajdziesz w artykule Informacje o projektach Firebase.
Dodaj pakiety SDK Firebase do projektu C++.
Poniższe czynności pokazują, jak dodać do projektu C++ dowolną obsługiwaną usługę Firebase. W tym przykładzie pokażemy, jak dodać znaczniki Firebase Authentication i Firebase Realtime Database.
Ustaw zmienną środowiskową
FIREBASE_CPP_SDK_DIR
na lokalizację rozpakowanego pakietu SDK Firebase C++.Do pliku
CMakeLists.txt
projektu dodaj poniższą treść, w tym biblioteki usług Firebase, których chcesz używać. Aby na przykład użyć właściwości Firebase Authentication i 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}")
Uruchom aplikację w C++.
Dostępne biblioteki (komputer)
Pakiet SDK Firebase C++ obejmuje obsługę przepływu pracy na komputerze w przypadku podzbioru funkcji, co umożliwia korzystanie z określonych części Firebase w samodzielnych kompilacjach na komputery z systemem Windows, macOS i Linux.
Usługa Firebase | Odwołania do bibliotek (za pomocą CMake) |
---|---|
App Check |
firebase_app_check (wymagane) firebase_app
|
Authentication |
firebase_auth (wymagane) firebase_app
|
Cloud Firestore |
firebase_firestore firebase_auth firebase_app
|
Cloud Functions |
firebase_functions (wymagane) firebase_app
|
Cloud Storage |
firebase_storage (wymagane) firebase_app
|
Realtime Database |
firebase_database (wymagane) firebase_app
|
Remote Config |
firebase_remote_config (wymagane) firebase_app
|
Firebase udostępnia pozostałe biblioteki na komputery w postaci implementacji typu stub (niefunkcjonalnych), aby ułatwić tworzenie aplikacji na Windows, macOS i Linux. Dlatego nie musisz warunkowo kompilować kodu, aby kierować go na komputery.
Realtime Database komputer
Pakiet Realtime Database SDK na komputery korzysta z REST do uzyskiwania dostępu do bazy danych, więc musisz zadeklarować indeksy, których używasz z Query::OrderByChild()
na komputerze, w przeciwnym razie Twoje odbiorniki nie będą działać.
Dodatkowe informacje o konfiguracji na komputerze
Biblioteki systemu Windows
W przypadku systemu Windows wersje bibliotek są udostępniane na podstawie tych kryteriów:
- Platforma kompilacji: tryb 32-bitowy (x86) lub 64-bitowy (x64)
- Środowisko wykonawcze Windows: wielowątkowe / MT vs wielowątkowe DLL /MD
- Cel: wersja a debugowanie
Pamiętaj, że poniższe biblioteki zostały przetestowane w Visual Studio 2015 i 2017.
Podczas tworzenia aplikacji na komputery z systemem Windows w języku C++ połącz z projektem te biblioteki Windows SDK: Więcej informacji znajdziesz w dokumentacji kompilatora.
Biblioteka Firebase C++ | Zależności biblioteki pakietu SDK Windows |
---|---|
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 |
Biblioteki macOS
W przypadku systemu macOS (Darwin) wersje bibliotek są udostępniane na platformę 64-bitową (x86_64). Dla Twojej wygody udostępniamy też platformy.
Pamiętaj, że biblioteki macOS zostały przetestowane w Xcode 16.2.
Podczas tworzenia aplikacji na komputery z systemem macOS w języku C++ połącz z projektem te elementy:
pthread
biblioteka systemowaCoreFoundation
platforma systemowa macOS,Foundation
platforma systemowa macOS,Security
platforma systemowa macOS,GSS
platforma systemowa macOS,Kerberos
platforma systemowa macOS,SystemConfiguration
platforma systemowa macOS,
Więcej informacji znajdziesz w dokumentacji kompilatora.
Biblioteki Linuksa
W przypadku systemu Linux wersje bibliotek są udostępniane na platformy 32-bitowe (i386) i 64-bitowe (x86_64).
Pamiętaj, że biblioteki Linuxa były testowane przy użyciu GCC 4.8.0, GCC 7.2.0 i Clang 5.0 w systemie Ubuntu.
Podczas tworzenia aplikacji na komputery z systemem Linux w języku C++ połącz bibliotekę systemową pthread
z projektem. Więcej informacji znajdziesz w dokumentacji kompilatora. Jeśli tworzysz aplikację za pomocą GCC w wersji 5 lub nowszej, zdefiniuj -D_GLIBCXX_USE_CXX11_ABI=0
.
Dalsze kroki
Przejrzyj przykładowe aplikacje Firebase.
Zapoznaj się z pakietem SDK open source w GitHubie.
Przygotuj się do uruchomienia aplikacji:
- Skonfiguruj alerty dotyczące budżetu w projekcie w konsoli Google Cloud.
- Monitoruj panel Wykorzystanie i rozliczenia w Firebase konsoli, aby uzyskać ogólny obraz wykorzystania usług Firebase w projekcie.
- Zapoznaj się z listą kontrolną dotyczącą uruchamiania Firebase.