Ulepsz swoje gry w C++ za pomocą naszych pakietów SDK Firebase w C++, które zapewniają interfejs C++ na pakietach SDK Firebase.
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.gradlenajwyż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.gradlenajwyż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.propertiesprojektu określ lokalizację rozpakowanego pakietu SDK:systemProp.firebase_cpp_sdk.dir=full-path-to-SDK
Dodaj do pliku
settings.gradleprojektu 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.txtprojektu 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++ dla platform Apple są wymienione w wersji tej strony dotyczącej konfiguracji platform Apple (iOS+).
| Usługa Firebase | Odniesienia do biblioteki ( firebaseCpp.dependenciesw przypadku pliku build.gradle) |
Odniesienia do biblioteki ( firebase_libsw 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ądzeniu mobilnym
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 do usług Google Play podczas kompilowania 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/*.proodpowiadają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.jsonna 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.plistna 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_DIRna lokalizację rozpakowanego pakietu SDK Firebase C++.Do pliku
CMakeLists.txtprojektu 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_firestorefirebase_authfirebase_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:
pthreadbiblioteka systemowaCoreFoundationRamy systemowe macOSFoundationRamy systemowe macOSSecurityRamy systemowe macOSGSSRamy systemowe macOSKerberosRamy systemowe macOSSystemConfigurationRamy systemowe 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.