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 używanych przez Firebase na interfejs bardziej znany programistom 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 23 (Marshmallow);
Korzysta z Gradle i jest skonfigurowany za pomocą CMake
Skonfiguruj urządzenie fizyczne lub użyj emulatora, aby uruchomić aplikację.
Zaloguj się w Firebase za pomocą 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 konsoli Firebase.
Kliknij Zarejestruj aplikację.
Krok 4. Dodaj plik konfiguracyjny Firebase
Kliknij Pobierz 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 ciągów znaków 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 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.5.0' // Google Services plugin implementation 'com.google.android.gms:18.10.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 }
Dodaj do pliku
CMakeLists.txtprojektu 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 Firebase został zintegrowany. W przeciwnym razie możesz pominąć krok weryfikacji.
W dziennikach urządzenia pojawi się weryfikacja Firebase, która potwierdzi zakończenie inicjowania. 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 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 dotyczącej konfiguracji na platformy 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ądzeniach mobilnych
Otrzymywanie 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 w Android NDK.
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, plików makefile, Visual Studio itp.), możesz użyć tego skryptu do zautomatyzowania generowania zasobów ciągów tekstowych Androida.
ProGuard
Wiele systemów kompilacji Androida używa ProGuarda do 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 i Google Analytics, plik build.gradle będzie 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 klienckim (co oznacza, że należy je zaktualizować, ponownie aktywować, naprawić uprawnienia itp.). Z biblioteki Firebase nie można korzystać, dopóki sytuacja na urządzeniu klienta nie zostanie skorygowana.
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 (wersja 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 przepływ pracy, 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++ na potrzeby 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ć 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
|
Pozostałe biblioteki na komputery Firebase udostępnia jako implementacje typu stub (niefunkcjonalne), 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 biblioteki 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 26.2.
Podczas tworzenia aplikacji na komputery z macOS w języku C++ połącz z projektem te elementy:
pthreadbiblioteka systemowaCoreFoundationplatforma systemowa macOS,Foundationplatforma systemowa macOS,Securityplatforma systemowa macOS,GSSplatforma systemowa macOS,Kerberosplatforma systemowa macOS,SystemConfigurationplatforma 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).
Biblioteki dla systemu Linux zostały przetestowane w systemie Ubuntu przy użyciu kompilatorów GCC 4.8.0, GCC 7.2.0 i Clang 5.0.
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 korzystasz z GCC w wersji 5 lub nowszej, zdefiniuj -D_GLIBCXX_USE_CXX11_ABI=0.
Dalsze kroki
Poznaj przykładowe aplikacje Firebase.
Zapoznaj się z pakietem SDK typu open source w GitHubie.
Przygotuj się do uruchomienia aplikacji:
- Skonfiguruj alerty budżetowe 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.