Wzmocnij swoje gry C++ dzięki naszym pakietom SDK Firebase C++, które zapewniają interfejs C++ w dodatku do Firebase na iOS i Androida.
Uzyskaj dostęp do Firebase całkowicie z kodu C++, bez konieczności pisania kodu natywnego dla platformy. Pakiet Firebase SDK tłumaczy również wiele idiomów specyficznych dla języka używanych przez Firebase na interfejs bardziej znany programistom C++.
Więcej informacji na temat zwiększania mocy gier za pomocą Firebase znajdziesz na naszej stronie gier Firebase .
Dodałeś już Firebase do swojego projektu C++? Upewnij się, że używasz najnowszej wersji pakietu Firebase C++ SDK .
Warunki wstępne
Zainstaluj preferowany edytor lub środowisko IDE, takie jak Android Studio, IntelliJ lub VS Code.
Uzyskaj pakiet Android SDK .
Upewnij się, że Twój projekt spełnia te wymagania:
Targets API level 19 (KitKat) lub wyższy
Używa Gradle i jest skonfigurowany z CMake
Skonfiguruj urządzenie fizyczne lub użyj emulatora, aby uruchomić aplikację.
Zaloguj się do Firebase przy użyciu swojego konta Google.
Krok 2 : utwórz projekt Firebase
Zanim dodasz Firebase do projektu C++, musisz utworzyć projekt Firebase, aby połączyć się z projektem C++. Odwiedź Zrozumienie projektów Firebase , aby dowiedzieć się więcej o projektach Firebase.
Krok 3 : Zarejestruj swoją aplikację w Firebase
Aby korzystać z Firebase w aplikacji na Androida, musisz zarejestrować swoją aplikację w projekcie Firebase. Rejestracja aplikacji jest często nazywana „dodawaniem” aplikacji do projektu.
Przejdź do konsoli Firebase .
Na środku strony przeglądu projektu kliknij ikonę Androida (
) lub Dodaj aplikację , aby uruchomić przepływ pracy instalacji.Wpisz nazwę pakietu swojej aplikacji w polu Nazwa pakietu Androida .
Nazwa pakietu jednoznacznie identyfikuje Twoją aplikację na urządzeniu i w Sklepie Google Play.
Nazwa pakietu jest często określana jako identyfikator aplikacji .
Find your app's package name in your module (app-level) Gradle file, usually
app/build.gradle
(example package name:com.yourcompany.yourproject
).Pamiętaj, że w wartości nazwy pakietu rozróżniana jest wielkość liter i nie można jej zmienić dla tej aplikacji Firebase na Androida po jej zarejestrowaniu w projekcie Firebase.
(Opcjonalnie) Podaj inne informacje o aplikacji: pseudonim aplikacji i certyfikat podpisywania debugowania SHA-1 .
Pseudonim aplikacji : wewnętrzny, wygodny identyfikator, który jest widoczny tylko dla Ciebie w konsoli Firebase
Certyfikat podpisywania debugowania SHA-1 : Uwierzytelnianie Firebase (w przypadku korzystania z logowania Google lub logowania za pomocą numeru telefonu ) i Linków dynamicznych Firebase wymaga skrótu SHA-1 .
Kliknij Zarejestruj aplikację .
Krok 4 : Dodaj plik konfiguracyjny Firebase
Kliknij Pobierz google-services.json, aby uzyskać plik konfiguracyjny Firebase Android.
Plik konfiguracyjny Firebase zawiera unikalne, ale nie tajne identyfikatory Twojego projektu. Aby dowiedzieć się więcej o tym pliku konfiguracyjnym, odwiedź stronę Zrozumienie projektów Firebase .
W dowolnym momencie możesz ponownie pobrać plik konfiguracyjny Firebase .
Upewnij się, że nazwa pliku konfiguracyjnego nie zawiera dodatkowych znaków, takich jak
(2)
.
Otwórz projekt C++ w IDE, a następnie dodaj plik konfiguracyjny do projektu:
Kompilacje Gradle — Dodaj plik konfiguracyjny do tego samego katalogu, co plik
build.gradle
najwyższego poziomu.Inne systemy kompilacji — zobacz Niestandardowe systemy kompilacji poniżej, aby wygenerować zasoby ciągów Androida .
(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ę Google Services Gradle. Sprawdź również, czy masz repozytorium Maven firmy 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.3.13' // Google Services plugin implementation 'com.google.android.gms:18.1.0' } } allprojects { // ... repositories { // Check that you have the following line (if not, add it): google() // Google's Maven repository // ... } }
Zastosuj wtyczkę Google Services Gradle:
apply plugin: 'com.android.application' // Add the following line: apply plugin: 'com.google.gms.google-services' // Google Services plugin android { // ... }
Skończyłeś konfigurować zadania w konsoli Firebase. Przejdź do sekcji Dodaj pakiety SDK Firebase C++ poniżej.
Krok 5. Dodaj pakiety SDK Firebase C++
Czynności opisane w tej sekcji stanowią przykład dodawania obsługiwanych produktów Firebase do projektu Firebase C++.
Pobierz pakiet Firebase C++ SDK , a następnie rozpakuj go w dogodnym miejscu.
Zestaw Firebase C++ SDK nie jest specyficzny dla platformy, ale zawiera biblioteki specyficzne dla platformy.
W pliku
gradle.properties
projektu określ lokalizację rozpakowanego pakietu SDK:systemProp.firebase_cpp_sdk.dir=full-path-to-SDK
Do pliku
settings.gradle
projektu dodaj następującą zawartość: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 następującą zawartość.
Uwzględnij zależności bibliotek produktów Firebase, których chcesz używać w swojej aplikacji.Analiza włączona
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 }
Analytics nie jest włączone
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 następującą zawartość.
Dołącz biblioteki produktów Firebase, których chcesz używać w swojej aplikacji.Analiza włączona
# 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}")
Analytics nie jest włączone
# 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 swoją aplikację, aby upewnić się, że wszystkie zależności mają niezbędne wersje.
Jeśli dodałeś Analytics, uruchom aplikację, aby przesłać do Firebase weryfikację, że udało Ci się zintegrować Firebase. W przeciwnym razie możesz pominąć etap weryfikacji.
W dziennikach urządzenia zostanie wyświetlony komunikat Firebase potwierdzający zakończenie inicjalizacji. Jeśli aplikacja została uruchomiona w emulatorze, który ma dostęp do sieci, konsola Firebase powiadomi Cię, że połączenie aplikacji zostało zakończone.
Wszystko gotowe! Twoja aplikacja C++ jest zarejestrowana i skonfigurowana do korzystania z usług Firebase.
Dostępne biblioteki
Dowiedz się więcej o bibliotekach C++ Firebase w dokumentacji referencyjnej oraz w naszym wydaniu SDK typu open source w witrynie GitHub .
Dostępne biblioteki dla Androida (za pomocą CMake)
Zwróć uwagę, że biblioteki C++ dla systemu iOS są wymienione na tej stronie konfiguracji dla systemu iOS .
Produkt Firebase | Referencje biblioteczne ( firebaseCpp.dependencies dla pliku build.gradle ) | Referencje biblioteczne ( firebase_libs dla pliku CMakeLists.txt ) |
---|---|---|
AdMob | admob | firebase_admob (wymagane) firebase_analytics (wymagane) firebase_app |
Analityka | analytics | firebase_analytics (wymagane) firebase_app |
Uwierzytelnianie | auth | firebase_auth (wymagane) firebase_app |
Cloud Firestore | firestore | firebase_firestore (wymagane) firebase_auth (wymagane) firebase_app |
Funkcje chmury | functions | firebase_functions (wymagane) firebase_app |
Wiadomości w chmurze | messaging | firebase_messaging (zalecane) firebase_analytics (wymagane) firebase_app |
Magazyn w chmurze | storage | firebase_storage (wymagane) firebase_app |
Dynamiczne linki | dynamicLinks | firebase_dynamic_links (zalecane) firebase_analytics (wymagane) firebase_app |
Baza danych czasu rzeczywistego | database | firebase_database (wymagane) firebase_app |
Zdalna konfiguracja | remoteConfig | firebase_remote_config (recommended) firebase_analytics (wymagane) firebase_app |
Dodatkowe informacje dotyczące konfiguracji mobilnej
Otrzymuj raporty o awariach NDK
Firebase Crashlytics obsługuje raportowanie o awariach aplikacji korzystających z natywnych bibliotek Androida. Aby dowiedzieć się więcej, zobacz Pobieranie raportów o awariach Android NDK .
Niestandardowe systemy kompilacji
Firebase udostępnia skrypt generate_xml_from_google_services_json.py
do konwertowania google-services.json
na zasoby .xml
, które możesz uwzględnić w swoim projekcie. Ten skrypt stosuje tę samą transformację, którą wykonuje wtyczka Gradle usług Google Play podczas tworzenia aplikacji na Androida.
Jeśli nie budujesz przy użyciu Gradle (na przykład używasz ndk-build, makefiles, Visual Studio itp.), możesz użyć tego skryptu do zautomatyzowania generowania zasobów ciągów Androida .
ProGuard
Wiele systemów kompilacji Android używa funkcji ProGuard do kompilacji w trybie wydania w celu zmniejszenia rozmiarów aplikacji i ochrony kodu źródłowego Java.
Jeśli używasz ProGuard, musisz dodać pliki w libs/android/*.pro
odpowiadające bibliotekom Firebase C++, których używasz w konfiguracji ProGuard.
Na przykład w Gradle, jeśli korzystasz z 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 usługi Google Play były na urządzeniu z Androidem klienta. Jeśli biblioteka Firebase C++ zwraca kInitResultFailedMissingDependency
podczas inicjalizacji, 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 klienckim nie zostanie naprawiona.
Możesz dowiedzieć się, dlaczego usługi Google Play są niedostępne na urządzeniu klienckim (i spróbować to naprawić), korzystając z funkcji w google_play_services/availability.h
.
W poniższej tabeli wymieniono, czy usługi Google Play są wymagane na urządzeniu klienckim dla każdego obsługiwanego produktu Firebase.
Biblioteka Firebase C++ | Usługi Google Play są wymagane na urządzeniu klienckim? |
---|---|
AdMob | Niewymagane (zwykle) |
Analityka | Nie wymagane |
Uwierzytelnianie | Wymagany |
Cloud Firestore | Wymagany |
Funkcje chmury | Wymagany |
Wiadomości w chmurze | Wymagany |
Magazyn w chmurze | Wymagany |
Dynamiczne linki | Wymagany |
Baza danych czasu rzeczywistego | Wymagany |
Zdalna konfiguracja | Wymagany |
Usługi AdMob i Google Play
Większość wersji pakietu SDK do reklam mobilnych Google na Androida może działać poprawnie bez usług Google Play na urządzeniu klienckim. 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, wymagane są usługi Google Play .
Inicjalizacja AdMob zwróci kInitResultFailedMissingDependency
tylko wtedy, gdy spełnione są oba poniższe warunki:
- Usługi Google Play są niedostępne na urządzeniu klienckim.
- Używasz
com.google.android.gms:play-services-ads-lite
.
Skonfiguruj przepływ pracy na komputerze ( beta )
Kiedy tworzysz grę, często znacznie łatwiej jest najpierw przetestować ją na platformach stacjonarnych, a następnie wdrożyć i przetestować na urządzeniach mobilnych na późniejszym etapie tworzenia. Aby obsłużyć ten przepływ pracy, udostępniamy podzbiór zestawów SDK Firebase C++ , które można uruchamiać w systemach Windows, macOS, Linux oraz w edytorze C++.
W przypadku przepływów pracy na komputerze musisz wykonać następujące czynności:
- Skonfiguruj projekt C++ dla CMake.
- Utwórz projekt Firebase
- Zarejestruj swoją aplikację (iOS lub Android) w Firebase
- Dodaj plik konfiguracyjny Firebase dla platformy mobilnej
Utwórz komputerową wersję pliku konfiguracyjnego Firebase:
Jeśli dodałeś plik
google-services.json
systemu Android — po uruchomieniu aplikacji Firebase zlokalizuje ten plik mobilny , a następnie automatycznie wygeneruje plik konfiguracyjny Firebase dla komputerów stacjonarnych (google-services-desktop.json
).Jeśli dodałeś plik
GoogleService-Info.plist
dla systemu iOS – przed uruchomieniem aplikacji musisz przekonwertować ten plik mobilny na plik konfiguracyjny Firebase dla komputerów . Aby przekonwertować plik, uruchom następujące polecenie z tego samego katalogu, co plikGoogleService-Info.plist
:generate_xml_from_google_services_json.py --plist -i GoogleService-Info.plist
Ten plik konfiguracyjny na komputery stacjonarne zawiera identyfikator projektu C++ wprowadzony w przepływie pracy konfiguracji konsoli Firebase. Odwiedź Zrozumienie projektów Firebase , aby dowiedzieć się więcej o plikach konfiguracyjnych.
Dodaj pakiety SDK Firebase do projektu w języku C++.
Poniższe kroki stanowią przykład tego, jak dodać dowolny obsługiwany produkt Firebase do projektu C++. W tym przykładzie omówimy dodawanie Uwierzytelniania Firebase i Bazy danych czasu rzeczywistego Firebase.
Ustaw zmienną środowiskową
FIREBASE_CPP_SDK_DIR
na lokalizację rozpakowanego pakietu Firebase C++ SDK.Do pliku
CMakeLists.txt
projektu dodaj następującą zawartość, w tym biblioteki produktów Firebase, których chcesz użyć. Na przykład, aby użyć Uwierzytelniania Firebase i Bazy danych czasu rzeczywistego 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 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 języku C++.
Dostępne biblioteki (komputer stacjonarny)
Pakiet Firebase C++ SDK obejmuje obsługę przepływów pracy na pulpicie dla podzbioru funkcji, dzięki czemu niektóre części Firebase mogą być używane w samodzielnych kompilacjach pulpitu w systemach Windows, macOS i Linux.
Produkt Firebase | Odniesienia do bibliotek (za pomocą CMake) |
---|---|
Uwierzytelnianie | firebase_auth (wymagane) firebase_app |
Cloud Firestore | firebase_firestore firebase_auth firebase_app |
Funkcje chmury | firebase_functions (wymagane) firebase_app |
Magazyn w chmurze | firebase_storage (wymagane) firebase_app |
Baza danych czasu rzeczywistego | firebase_database (wymagane) firebase_app |
Zdalna konfiguracja | firebase_remote_config (wymagane) firebase_app |
Firebase udostępnia pozostałe biblioteki dla komputerów stacjonarnych jako implementacje skrótowe (niefunkcjonalne) dla wygody podczas kompilowania dla systemów Windows, macOS i Linux. Dlatego nie musisz warunkowo kompilować kodu, aby kierować go na pulpit.
Pulpit bazy danych czasu rzeczywistego
Zestaw SDK bazy danych czasu rzeczywistego dla komputerów stacjonarnych używa REST w celu uzyskania dostępu do bazy danych, więc musisz zadeklarować indeksy , których używasz z Query::OrderByChild()
na komputerze stacjonarnym, w przeciwnym razie odbiorniki ulegną awarii.
Dodatkowe informacje dotyczące konfiguracji pulpitu
Biblioteki Windows
W przypadku systemu Windows udostępniane są wersje bibliotek w oparciu o następujące elementy:
- Platforma kompilacji: tryb 32-bitowy (x86) vs 64-bitowy (x64)
- Środowisko wykonawcze Windows: wielowątkowy / MT vs wielowątkowy DLL / MD
- Cel: wydanie a debugowanie
Należy zauważyć, że następujące biblioteki zostały przetestowane przy użyciu programu Visual Studio 2015 i 2017.
Podczas tworzenia aplikacji klasycznych C++ w systemie Windows połącz z projektem następujące biblioteki Windows SDK. Więcej informacji znajdziesz w dokumentacji kompilatora.
Biblioteka Firebase C++ | Zależności bibliotek Windows SDK |
---|---|
Uwierzytelnianie | advapi32, ws2_32, crypt32 |
Cloud Firestore | advapi32, ws2_32, crypt32, rpcrt4, ole32, shell32 |
Funkcje chmury | advapi32, ws2_32, crypt32, rpcrt4, ole32 |
Magazyn w chmurze | advapi32, ws2_32, crypt32 |
Baza danych czasu rzeczywistego | advapi32, ws2_32, crypt32, iphlpapi, psapi, userenv |
Zdalna konfiguracja | advapi32, ws2_32, crypt32, rpcrt4, ole32 |
Biblioteki macOS
W przypadku systemu macOS (Darwin) dostępne są wersje bibliotek dla platformy 64-bitowej (x86_64). Ramy są również dostępne dla Twojej wygody.
Zwróć uwagę, że biblioteki macOS zostały przetestowane przy użyciu Xcode 13.3.1.
Tworząc aplikacje klasyczne w języku C++ w systemie macOS, połącz następujące elementy z projektem:
- biblioteka systemowa
pthread
- Framework systemu macOS
CoreFoundation
-
Foundation
struktura systemu macOS -
Security
Framework systemu macOS - Struktura systemu
GSS
macOS - Struktura systemu
Kerberos
macOS -
SystemConfiguration
systemu Struktura systemu macOS
Więcej informacji znajdziesz w dokumentacji kompilatora.
Biblioteki linuksowe
W przypadku systemu Linux dostępne są wersje bibliotek dla platform 32-bitowych (i386) i 64-bitowych (x86_64).
Zauważ, że biblioteki Linux były testowane przy użyciu GCC 4.8.0, GCC 7.2.0 i Clang 5.0 na Ubuntu.
Podczas tworzenia aplikacji klasycznych C++ w systemie Linux połącz bibliotekę systemową pthread
z projektem. Więcej informacji znajdziesz w dokumentacji kompilatora. Jeśli tworzysz z GCC 5 lub nowszym, zdefiniuj -D_GLIBCXX_USE_CXX11_ABI=0
.
Następne kroki
Poznaj przykładowe aplikacje Firebase .
Przygotuj się do uruchomienia aplikacji:
- Skonfiguruj alerty budżetowe dla swojego projektu w Google Cloud Console.
- Monitoruj panel użycia i rozliczeń w konsoli Firebase, aby uzyskać ogólny obraz wykorzystania projektu w wielu usługach Firebase.
- Przejrzyj listę kontrolną uruchamiania Firebase .