Catch up on highlights from Firebase at Google I/O 2023. Learn more

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 w całości ze swojego kodu C++, bez konieczności pisania kodu natywnego dla platformy. Firebase SDK tłumaczy również wiele idiomów specyficznych dla danego języka używanych przez Firebase na interfejs bardziej znany programistom C++.

Dowiedz się więcej o ulepszaniu swoich gier za pomocą Firebase na naszej stronie z grami w Firebase .

Dodałeś już Firebase do swojego projektu C++? Upewnij się, że używasz najnowszej wersji pakietu Firebase C++ SDK .

Wymagania wstępne

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

  • Uzyskaj zestaw Android SDK .

  • Upewnij się, że Twój projekt spełnia te wymagania:

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

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

    • W przypadku niektórych bibliotek C++ usługi Google Play są wymagane na urządzeniu klienckim; 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ę 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ć swoją 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 swojej aplikacji w polu Nazwa pakietu Androida .

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

  5. Kliknij Zarejestruj aplikację .

Krok 4 : Dodaj plik konfiguracyjny Firebase

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

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

  3. (Tylko kompilacje Gradle) Aby włączyć usługi Firebase w swoim 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 również 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.3.15'  // Google Services plugin
            implementation 'com.google.android.gms:18.2.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. Zakończyłeś konfigurowanie zadań w konsoli Firebase. Kontynuuj, aby dodać zestawy SDK Firebase C++ poniżej.

Krok 5 : Dodaj zestawy SDK Firebase C++

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

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

    Zestaw Firebase C++ SDK 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 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"
    
  4. Do pliku Gradle modułu (na poziomie aplikacji) (zazwyczaj 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ą zawartość.
    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 swoją aplikację, aby upewnić się, że wszystkie zależności mają niezbędne wersje.

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

    Twoje dzienniki urządzeń pokażą weryfikację Firebase, że inicjalizacja została zakończona. Jeśli uruchomiłeś swoją aplikację na emulatorze, który ma dostęp do sieci, konsola Firebase poinformuje 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 witrynie GitHub .

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

Należy pamiętać, że biblioteki C++ dla platform Apple są wymienione na tej stronie konfiguracji w wersji 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
Sprawdź aplikację appCheck firebase_app_check
(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
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

Pobierz raporty o awariach NDK

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

Systemy budowania na zamówienie

Firebase udostępnia skrypt generate_xml_from_google_services_json.py do konwersji zasobów google-services.json na .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 Android String Resources .

ProGuard

Wiele systemów kompilacji Android używa ProGuard do kompilacji w trybie Release 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 wyglądałby 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 znajdowały się na urządzeniu klienta z systemem Android. 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ć, poprawić 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 usługi Google Play są wymagane na urządzeniu klienckim dla każdego obsługiwanego produktu Firebase.

Biblioteka Firebase C++ Usługi Google Play wymagane na urządzeniu klienckim?
AdMob Nie wymagane (zwykle)
Analityka Nie wymagane
Uwierzytelnianie Wymagany
Cloud 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 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 ( wersja beta )

Podczas tworzenia gry często znacznie łatwiej jest najpierw przetestować grę na platformach stacjonarnych, a następnie wdrożyć ją i przetestować na urządzeniach mobilnych w późniejszym etapie tworzenia. Aby wesprzeć ten przepływ pracy, udostępniamy podzbiór zestawów SDK Firebase C++ , które można uruchamiać w systemach Windows, macOS, Linux oraz z poziomu edytora C++.

  1. W przypadku przepływów pracy na komputerze 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 komputerową wersję pliku konfiguracyjnego Firebase:

    • Jeśli dodałeś plik google-services.json na Androida — po uruchomieniu aplikacji Firebase lokalizuje ten plik mobilny , a następnie automatycznie generuje plik konfiguracyjny Firebase na komputer ( 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 komputerze . 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++, który został wprowadzony w przepływie pracy konfiguracji konsoli Firebase. Odwiedź stronę Zrozumieć 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 dodawania obsługiwanego produktu Firebase do projektu C++. W tym przykładzie przeprowadzimy proces dodawania uwierzytelniania Firebase i bazy danych czasu rzeczywistego Firebase.

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

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

Dostępne biblioteki (komputer stacjonarny)

Pakiet SDK Firebase C++ obejmuje obsługę przepływów pracy na komputerach stacjonarnych 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 Odwołania do bibliotek (przy użyciu CMake)
Sprawdź aplikację firebase_app_check
(wymagane) firebase_app
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 zapewnia 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 w celu kierowania na pulpit.

Pulpit bazy danych czasu rzeczywistego

Zestaw SDK bazy danych czasu rzeczywistego dla komputerów stacjonarnych korzysta z usług REST w celu uzyskania dostępu do bazy danych, dlatego należy zadeklarować indeksy używane z Query::OrderByChild() na komputerach stacjonarnych, w przeciwnym razie detektory zakończą się niepowodzeniem.

Dodatkowe informacje dotyczące konfiguracji komputera stacjonarnego

Biblioteki Windowsa

W przypadku systemu Windows wersje bibliotek są dostarczane w oparciu o następujące elementy:

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

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

Tworząc aplikacje klasyczne C++ w systemie Windows, połącz z projektem następujące biblioteki zestawu Windows SDK. Więcej informacji można znaleźć w dokumentacji kompilatora.

Biblioteka Firebase C++ Zależności bibliotek Windows SDK
Sprawdź aplikację advapi32, ws2_32, crypt32
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). Dla Twojej wygody dostępne są również ramy.

Pamiętaj, że biblioteki macOS zostały przetestowane przy użyciu Xcode 13.3.1.

Tworząc aplikacje klasyczne C++ w systemie macOS, połącz następujące elementy ze swoim projektem:

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

Więcej informacji można znaleźć w dokumentacji kompilatora.

Biblioteki Linuksa

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

Zauważ, że biblioteki Linuksa zostały przetestowane przy użyciu GCC 4.8.0, GCC 7.2.0 i Clang 5.0 na Ubuntu.

Tworząc aplikacje klasyczne C++ w systemie Linux, połącz bibliotekę systemową pthread z projektem. Więcej informacji można znaleźć w dokumentacji kompilatora. Jeśli budujesz z GCC 5 lub nowszym, zdefiniuj -D_GLIBCXX_USE_CXX11_ABI=0 .

Następne kroki