Dodaj Firebase do swojego projektu C++

Wzmocnij swoje gry C++ za pomocą naszych zestawów SDK Firebase C++, które zapewniają interfejs C++ oprócz zestawów SDK Firebase.

Uzyskaj dostęp do Firebase całkowicie ze swojego kodu C++, bez konieczności pisania kodu natywnego dla platformy. Zestaw SDK Firebase tłumaczy także wiele idiomów specyficznych dla języka używanych przez Firebase na interfejs bardziej znany programistom C++.

Więcej informacji o zasilaniu 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 SDK Firebase C++ .

Warunki wstępne

  • Zainstaluj preferowany edytor lub środowisko IDE, takie jak Android Studio, IntelliJ lub VS Code.

  • Uzyskaj pakiet SDK dla Androida .

  • Upewnij się, że Twój projekt spełnia następujące wymagania:

  • Skonfiguruj urządzenie fizyczne lub użyj emulatora, aby uruchomić aplikację.

    • Emulatory muszą używać obrazu emulatora w Google Play.

    • W przypadku niektórych bibliotek C++ na urządzeniu klienckim wymagane są usługi Google Play; przejrzyj listę na tej stronie.

  • Zaloguj się do Firebase przy użyciu swojego konta Google.

Krok 2 : Utwórz projekt Firebase

Zanim będziesz mógł dodać Firebase do swojego projektu C++, musisz utworzyć projekt Firebase, aby połączyć się z projektem C++. Odwiedź stronę Poznaj projekty 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ć aplikację w projekcie Firebase. Rejestracja aplikacji jest często nazywana „dodawaniem” aplikacji do projektu.

  1. Przejdź do konsoli Firebase .

  2. Na środku strony przeglądu projektu kliknij ikonę Androida ( ) lub Dodaj aplikację , aby uruchomić proces konfiguracji.

  3. Wpisz nazwę pakietu aplikacji w polu nazwy pakietu Androida .

  4. (Opcjonalnie) Wprowadź inne informacje o aplikacji: pseudonim aplikacji i certyfikat podpisywania debugowania SHA-1 .

  5. Kliknij opcję Zarejestruj aplikację .

Krok 4 : Dodaj plik konfiguracyjny Firebase

  1. Kliknij Pobierz plik google-services.json, aby uzyskać plik konfiguracyjny Firebase na Androida.

  2. Otwórz swój projekt C++ w IDE, a następnie dodaj plik konfiguracyjny do projektu:

  3. (Tylko kompilacje Gradle) Aby włączyć usługi Firebase w projekcie C++, dodaj wtyczkę google-services do pliku build.gradle najwyższego poziomu.

    1. Dodaj reguły, aby uwzględnić wtyczkę Google Services Gradle. Sprawdź, czy masz także 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.4.1'  // Google Services plugin
            implementation 'com.google.android.gms:18.3.0'
          }
        }
      
        allprojects {
          // ...
      
          repositories {
            // Check that you have the following line (if not, add it):
            google()  // Google's Maven repository
            // ...
          }
        }
      
    2. 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 {
          // ...
        }
      
  4. Skończyłeś konfigurowanie zadań w konsoli Firebase. Kontynuuj dodawanie pakietów SDK Firebase C++ poniżej.

Krok 5 : Dodaj zestawy SDK Firebase C++

Kroki opisane w tej sekcji stanowią przykład dodawania obsługiwanych produktów Firebase do projektu Firebase C++.

  1. Pobierz pakiet SDK Firebase C++ , a następnie rozpakuj zestaw SDK w dogodnym miejscu.

    Zestaw SDK Firebase C++ nie jest specyficzny dla platformy, ale zawiera biblioteki specyficzne dla platformy.

  2. W pliku gradle.properties projektu określ lokalizację rozpakowanego pakietu SDK:

    systemProp.firebase_cpp_sdk.dir=full-path-to-SDK
    
  3. Do pliku settings.gradle swojego projektu dodaj następującą treść:

    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"
    
  4. Do pliku Gradle modułu (na poziomie aplikacji) (zwykle app/build.gradle ) dodaj następującą treść.
    Dołącz zależności bibliotek dla produktów Firebase, których chcesz używać w swojej aplikacji.

    Analityka 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
    }
    

    Analityka nie jest 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 Firebase Authentication and Firebase Realtime Database
    apply from: "$gradle.firebase_cpp_sdk_dir/Android/firebase_dependencies.gradle"
    firebaseCpp.dependencies {
      auth
      database
    }
    
  5. Do pliku CMakeLists.txt projektu dodaj następującą treść.
    Dołącz biblioteki produktów Firebase, których chcesz używać w swojej aplikacji.

    Analityka 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}")
    

    Analityka nie jest 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 Firebase Authentication and Firebase Realtime Database
    set(firebase_libs
      firebase_auth
      firebase_database
      firebase_app
    )
    target_link_libraries(${target_name} "${firebase_libs}")
    
  6. Zsynchronizuj aplikację, aby mieć pewność, że wszystkie zależności mają niezbędne wersje.

  7. Jeśli dodałeś Analytics, uruchom aplikację, aby wysłać do Firebase weryfikację, że pomyślnie zintegrowałeś Firebase. W przeciwnym razie możesz pominąć krok weryfikacji.

    W dziennikach urządzenia zostanie wyświetlona weryfikacja Firebase potwierdzająca zakończenie inicjalizacji. Jeśli uruchomiłeś aplikację na emulatorze mającym dostęp do sieci, konsola Firebase powiadomi Cię, że połączenie aplikacji zostało nawiązane.

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 naszej wersji pakietu SDK typu open source w serwisie GitHub .

Dostępne biblioteki dla Androida (przy użyciu CMake)

Należy pamiętać, że biblioteki C++ dla platform Apple są wymienione w wersji tej strony konfiguracji dla platform Apple (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
Kontrola aplikacji appCheck firebase_app_check
(wymagane) firebase_app
Uwierzytelnianie auth firebase_auth
(wymagane) firebase_app
Chmura 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
Linki dynamiczne 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
(zalecane) firebase_analytics
(wymagane) firebase_app

Dodatkowe informacje dotyczące konfiguracji mobilnej

Uzyskaj raporty o awariach NDK

Firebase Crashlytics obsługuje raportowanie awarii dla aplikacji korzystających z natywnych bibliotek Androida. Aby dowiedzieć się więcej, zobacz Pobieranie raportów o awariach Androida NDK .

Niestandardowe systemy budowania

Firebase udostępnia skrypt generate_xml_from_google_services_json.py umożliwiający konwersję 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, plików makefile, Visual Studio itp.), możesz użyć tego skryptu, aby zautomatyzować generowanie zasobów ciągów systemu Android .

ProGuard

Wiele systemów kompilacji Androida używa ProGuard do kompilacji w trybie wydania, aby zmniejszyć rozmiar aplikacji i chronić kod źródłowy 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 przypadku Gradle, jeśli korzystasz z Google Analytics, Twój plik build.gradle będzie wyglądał następująco:

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 znajdowały się na urządzeniu klienta z systemem Android. Jeśli biblioteka Firebase C++ zwraca wartość 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.). Nie można używać biblioteki Firebase, 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 podano, czy na urządzeniu klienckim wymagane są usługi Google Play dla każdego obsługiwanego produktu Firebase.

Biblioteka Firebase C++ Czy na urządzeniu klienckim wymagane są usługi Google Play?
AdMob Nie jest wymagane (zwykle)
Analityka Nie wymagane
Uwierzytelnianie Wymagany
Chmura Firestore Wymagany
Funkcje chmury Wymagany
Wiadomości w chmurze Wymagany
Magazyn w chmurze Wymagany
Linki dynamiczne Wymagany
Baza danych czasu rzeczywistego Wymagany
Zdalna konfiguracja Wymagany

Usługi AdMob i Google Play

Większość wersji pakietu SDK do reklam mobilnych Google dla 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 wymienionej powyżej standardowej zależności com.google.firebase:firebase-ads , 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 stacjonarnym ( 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 w późniejszym etapie jej tworzenia. Aby wesprzeć ten przepływ pracy, udostępniamy podzbiór zestawów SDK Firebase C++ , które można uruchomić w systemach Windows, macOS, Linux oraz w edytorze C++.

  1. W przypadku przepływów pracy na komputerze stacjonarnym należy wykonać następujące czynności:

    1. Skonfiguruj swój projekt C++ dla CMake.
    2. Utwórz projekt Firebase
    3. Zarejestruj swoją aplikację (iOS lub Android) w Firebase
    4. Dodaj plik konfiguracyjny Firebase platformy mobilnej
  2. Utwórz wersję komputerową pliku konfiguracyjnego Firebase:

    • Jeśli dodano plik google-services.json na Androida — po uruchomieniu aplikacji Firebase lokalizuje ten plik mobilny , a następnie automatycznie generuje plik konfiguracyjny Firebase na komputer stacjonarny ( google-services-desktop.json ).

    • Jeśli dodałeś plik iOS GoogleService-Info.plist — przed uruchomieniem aplikacji musisz przekonwertować ten plik mobilny na plik konfiguracyjny Firebase na komputery stacjonarne . Aby przekonwertować plik, uruchom następujące polecenie z tego samego katalogu, w którym znajduje się plik GoogleService-Info.plist :

      generate_xml_from_google_services_json.py --plist -i GoogleService-Info.plist

    Ten plik konfiguracyjny pulpitu zawiera identyfikator projektu C++ wprowadzony w przepływie pracy konfiguracji konsoli Firebase. Odwiedź stronę Poznaj projekty Firebase, aby dowiedzieć się więcej o plikach konfiguracyjnych.

  3. Dodaj zestawy SDK Firebase do swojego projektu C++.

    Poniższe kroki służą jako przykład dodania dowolnego obsługiwanego produktu Firebase do projektu C++. W tym przykładzie omówimy dodanie uwierzytelniania Firebase i bazy danych Firebase Realtime.

    1. Ustaw zmienną środowiskową FIREBASE_CPP_SDK_DIR na lokalizację rozpakowanego pakietu SDK Firebase C++.

    2. Do pliku CMakeLists.txt swojego projektu dodaj następującą zawartość, w tym biblioteki produktów Firebase, których chcesz używać. Na przykład, aby użyć uwierzytelniania Firebase i bazy danych Firebase Realtime:

      # 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}")
      
  4. Uruchom aplikację C++.

Dostępne biblioteki (komputer stacjonarny)

Pakiet SDK Firebase C++ obejmuje obsługę przepływu pracy na komputerze stacjonarnym dla podzbioru funkcji, umożliwiając używanie niektórych części Firebase w samodzielnych kompilacjach komputerów stacjonarnych w systemach Windows, macOS i Linux.

Produkt Firebase Biblioteki referencyjne (przy użyciu CMake)
Kontrola aplikacji firebase_app_check
(wymagane) firebase_app
Uwierzytelnianie firebase_auth
(wymagane) firebase_app
Chmura 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 komputerowe jako implementacje pośredniczące (niefunkcjonalne) dla wygody podczas tworzenia dla systemów Windows, macOS i Linux. W związku z tym nie trzeba warunkowo kompilować kodu przeznaczonego na komputer stacjonarny.

Pulpit bazy danych czasu rzeczywistego

Zestaw SDK bazy danych czasu rzeczywistego dla komputerów stacjonarnych korzysta z protokołu REST w celu uzyskania dostępu do bazy danych, dlatego musisz zadeklarować indeksy , których używasz z Query::OrderByChild() na komputerze stacjonarnym, w przeciwnym razie detektory zawiodą.

Dodatkowe informacje dotyczące konfiguracji komputera stacjonarnego

Biblioteki Windowsa

W przypadku systemu Windows dostępne są wersje bibliotek oparte na następujących zasadach:

  • Platforma kompilacji: tryb 32-bitowy (x86) vs 64-bitowy (x64).
  • Środowisko wykonawcze Windows: wielowątkowe/MT vs wielowątkowe DLL/MD
  • Cel: wydanie vs debugowanie

Należy pamiętać, że następujące biblioteki zostały przetestowane przy użyciu programu Visual Studio 2015 i 2017.

Tworząc aplikacje klasyczne w języku C++ w systemie Windows, połącz z projektem następujące biblioteki Windows SDK. Aby uzyskać więcej informacji, zapoznaj się z dokumentacją kompilatora.

Biblioteka Firebase C++ Zależności bibliotek Windows SDK
Kontrola aplikacji advapi32, ws2_32, crypt32
Uwierzytelnianie advapi32, ws2_32, crypt32
Chmura 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-u

W przypadku systemu macOS (Darwin) dostępne są wersje bibliotek dla platformy 64-bitowej (x86_64). Dla Twojej wygody dostępne są również struktury.

Należy pamiętać, że biblioteki macOS zostały przetestowane przy użyciu Xcode 13.3.1.

Tworząc aplikacje komputerowe w języku C++ na macOS, połącz następujące elementy ze swoim projektem:

  • biblioteka systemowa pthread
  • Struktura systemu macOS CoreFoundation
  • Foundation struktura systemu macOS
  • Struktura systemu Security macOS
  • Struktura systemu GSS macOS
  • Struktura systemu Kerberos macOS
  • Konfiguracja SystemConfiguration Struktura systemu macOS

Aby uzyskać więcej informacji, zapoznaj się z dokumentacją kompilatora.

Biblioteki Linuksa

W przypadku systemu Linux dostępne są wersje bibliotek dla platform 32-bitowych (i386) i 64-bitowych (x86_64).

Należy pamiętać, że biblioteki systemu Linux zostały przetestowane przy użyciu GCC 4.8.0, GCC 7.2.0 i Clang 5.0 na Ubuntu.

Tworząc aplikacje klasyczne w języku C++ w systemie Linux, połącz bibliotekę systemową pthread ze swoim projektem. Aby uzyskać więcej informacji, zapoznaj się z dokumentacją kompilatora. Jeśli budujesz przy użyciu GCC 5 lub nowszego, zdefiniuj -D_GLIBCXX_USE_CXX11_ABI=0 .

Następne kroki