Dodaj Firebase do projektu C++

Ulepsz swoje gry w C++ dzięki naszym pakietom Firebase C++ SDK, które zapewniają interfejs C++ na bazie pakietów Firebase SDK.

Uzyskaj dostęp do Firebase całkowicie z poziomu kodu C++, bez konieczności pisania kodu natywnego dla platformy. Pakiet SDK Firebase tłumaczy też wiele idiomów językowych używanych przez Firebase na interfejs bardziej znany programistom C++.

Więcej informacji o ulepszaniu gier za pomocą Firebase znajdziesz na stronie Firebase poświęconej grom.

Masz już Firebase w projekcie C++? Upewnij się, że używasz najnowszej wersji pakietu SDK Firebase C++.


Wymagania wstępne

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

  • Pobierz 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.

    • Niektóre biblioteki C++ wymagają usług Google Play na urządzeniu klienta. Zapoznaj się z listą na tej stronie.

  • Zaloguj się w Firebase za pomocą konta Google.

Krok 2. Utwórz projekt w Firebase

Zanim dodasz Firebase do projektu C++, musisz utworzyć projekt Firebase, aby połączyć go z projektem C++. Więcej informacji o projektach w Firebase znajdziesz w artykule Informacje o projektach w Firebase.

Krok 3. Zarejestruj aplikację w Firebase

Aby używać Firebase w aplikacji na Androida, musisz zarejestrować aplikację w projekcie w Firebase. Rejestrowanie aplikacji jest często nazywane „dodawaniem” aplikacji do projektu.

  1. Otwórz konsolę Firebase.

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

  3. W polu Nazwa pakietu na Androida wpisz nazwę pakietu aplikacji.

  4. (Opcjonalnie) Wpisz Nazwę aplikacji, która jest wewnętrznym, wygodnym identyfikatorem widocznym tylko dla Ciebie w konsoli Firebase.

  5. Kliknij Zarejestruj aplikację.

Krok 4. Dodaj plik konfiguracji Firebase

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

  2. Otwórz projekt C++ w środowisku IDE, a następnie dodaj do niego plik konfiguracji:

    • Kompilacje Gradle – dodaj plik konfiguracji do tego samego katalogu, w którym znajduje się plik build.gradle najwyższego poziomu.

    • Inne systemy kompilacji – zapoznaj się z sekcją Niestandardowe systemy kompilacji poniżej, aby dowiedzieć się, jak wygenerować zasoby tekstowe Androida.

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

    1. 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.5.0'  // Google services Gradle plugin
            implementation 'com.google.android.gms:18.11.1'
          }
        }
      
        allprojects {
          // ...
      
          repositories {
            // Check that you have the following line (if not, add it):
            google()  // Google's Maven repository
            // ...
          }
        }
      
    2. Zastosuj wtyczkę Gradle usług Google:

        apply plugin: 'com.android.application'
        // Add the following line:
        apply plugin: 'com.google.gms.google-services'  // Google services Gradle plugin
      
        android {
          // ...
        }
      
  4. Zadania konfiguracyjne w konsoli Firebase zostały zakończone. Przejdź do sekcji Dodawanie pakietów Firebase C++ SDK poniżej.

Krok 5. Dodaj pakiety Firebase C++ SDK

Kroki opisane w tej sekcji pokazują, jak dodać obsługiwane usługi Firebase do projektu Firebase w C++.

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

    Pakiet SDK Firebase C++ nie jest przeznaczony na konkretną platformę, ale zawiera biblioteki dla konkretnych platform.

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

    systemProp.firebase_cpp_sdk.dir=full-path-to-SDK
  3. Dodaj do pliku settings.gradle projektu 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"
  4. Do pliku Gradle modułu (na poziomie aplikacji) (zwykle app/build.gradle) dodaj te treści.
    Uwzględnij zależności biblioteki dla usług Firebase, których chcesz używać w aplikacji.

    Model Analytics został włączony

    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łączony

    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. Dodaj do pliku CMakeLists.txt projektu te wiersze:
    Dołącz biblioteki usług Firebase, których chcesz używać w aplikacji.

    Model Analytics został włączony

    # 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łączony

    # 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 wszystkie zależności na pewno miały odpowiednie wersje.

  7. Jeśli dodano Analytics, uruchom aplikację, aby wysłać do Firebase potwierdzenie, że integracja z Firebase została przeprowadzona prawidłowo. W przeciwnym razie możesz pominąć krok weryfikacji.

    W dziennikach urządzenia pojawi się informacja o zakończeniu inicjalizacji Firebase. Jeśli aplikacja została uruchomiona w emulatorze z dostępem do sieci, w konsoli Firebase pojawi się powiadomienie, że połączenie z aplikacją zostało nawiązane.

To już wszystko Twoja aplikacja w C++ jest zarejestrowana i skonfigurowana do korzystania z usług Firebase.

Dostępne biblioteki

Więcej informacji o bibliotekach Firebase w C++ znajdziesz w dokumentacji referencyjnej i w naszym pakiecie SDK open source na GitHubie.

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

Pamiętaj, że biblioteki C++ na platformy Apple są wymienione w wersji tej strony konfiguracji dotyczącej platform Apple (iOS+).

Usługa Firebase Odwołania do biblioteki
(firebaseCpp.dependencies
dla pliku build.gradle)
Odwołania do biblioteki
(firebase_libs
dla pliku CMakeLists.txt)
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
(wymagane) firebase_auth
(wymagane) 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
Realtime Database database firebase_database
(wymagane) firebase_app
Remote Config remoteConfig firebase_remote_config
(zalecane) firebase_analytics
(wymagane) firebase_app
WYCOFANE LUB NIEOBSŁUGIWANE BIBLIOTEKI
Dynamic Links dynamicLinks firebase_dynamic_links
(zalecane) firebase_analytics
(wymagane) firebase_app

Dodatkowe informacje dotyczące konfiguracji na urządzeniach mobilnych

Otrzymywanie raportów o awariach NDK

Firebase Crashlytics obsługuje zgłaszanie awarii w aplikacjach korzystających z bibliotek natywnych Androida. Więcej informacji znajdziesz w artykule Raporty o awariach Androida NDK.

Niestandardowe systemy kompilacji

Firebase udostępnia skrypt generate_xml_from_google_services_json.py, który konwertuje zasoby google-services.json na zasoby .xml, które możesz uwzględnić w projekcie. Ten skrypt stosuje tę samą transformację, którą wykonuje wtyczka Gradle usług Google Play podczas tworzenia aplikacji na Androida.

Jeśli nie kompilujesz za pomocą Gradle (np. używasz ndk-build, plików makefile, Visual Studio itp.), możesz użyć tego skryptu do zautomatyzowania generowania zasobów tekstowych Androida.

ProGuard

Wiele systemów kompilacji Androida używa narzędzia ProGuard do kompilacji w trybie wersji, 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.

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 podczas inicjowania wartość kInitResultFailedMissingDependency, oznacza to, że usługi Google Play nie są dostępne na urządzeniu klienta (co oznacza, że trzeba je zaktualizować, ponownie aktywować, poprawić uprawnienia itp.). Nie można używać biblioteki Firebase, dopóki sytuacja na urządzeniu klienta nie zostanie naprawiona.

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 usługi Google Play są wymagane na urządzeniu klienta w przypadku poszczególnych obsługiwanych usług Firebase.

Biblioteka Firebase C++ Czy na urządzeniu klienta są wymagane usługi Google Play?
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

Konfigurowanie przepływu pracy na komputerze (beta)

Podczas tworzenia gry często znacznie łatwiej jest najpierw przetestować ją na platformach komputerowych, a później wdrożyć i przetestować na urządzeniach mobilnych. Aby ułatwić ten proces, udostępniamy podzbiór pakietów SDK Firebase C++, które można uruchamiać w systemach Windows, macOS i Linux oraz w edytorze C++.

  1. W przypadku przepływów pracy na komputerze musisz wykonać te czynności:

    1. Skonfiguruj projekt C++ pod kątem CMake.
    2. Tworzenie projektu w Firebase
    3. Zarejestruj aplikację (na iOS lub Androida) w Firebase
    4. Dodawanie pliku konfiguracji Firebase na platformę mobilną
  2. Utwórz komputerową wersję pliku konfiguracji Firebase:

    • Jeśli dodasz plik google-services.json na Androida – gdy uruchomisz aplikację, Firebase zlokalizuje ten plik mobilny, a następnie automatycznie wygeneruje plik konfiguracji Firebase na komputery (google-services-desktop.json).

    • Jeśli dodano plik GoogleService-Info.plist na iOS – przed uruchomieniem aplikacji musisz przekonwertować ten plik mobilny na plik konfiguracji Firebase na komputery. Aby przekonwertować plik, uruchom to polecenie w tym samym katalogu, w którym znajduje się plik GoogleService-Info.plist:

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

    Ten plik konfiguracji komputera zawiera identyfikator projektu C++ wpisany w procesie konfiguracji konsoli Firebase. Więcej informacji o plikach konfiguracji znajdziesz w artykule Informacje o projektach w Firebase.

  3. Dodaj pakiety SDK Firebase do projektu w C++.

    Poniższe kroki pokazują, jak dodać dowolną obsługiwaną usługę Firebase do projektu C++. W tym przykładzie dodamy Firebase Authentication i Firebase Realtime Database.

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

    2. Do pliku CMakeLists.txt projektu dodaj te treści, w tym biblioteki usług Firebase, których chcesz używać. Aby na przykład użyć 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}")
  4. Uruchom aplikację w C++.

Dostępne biblioteki (komputer)

Pakiet SDK Firebase C++ obsługuje procesy na komputerach w przypadku podzbioru funkcji, co umożliwia korzystanie z niektórych 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_firestore
firebase_auth
firebase_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 jako implementacje zastępcze (niefunkcjonalne), aby ułatwić tworzenie aplikacji na systemy Windows, macOS i Linux. Dlatego nie musisz kompilować kodu warunkowo, aby kierować reklamy na komputery.

Realtime Database komputer

Pakiet SDK Realtime Database na komputery używa interfejsu REST do uzyskiwania dostępu do bazy danych, więc musisz zadeklarować indeksy, których używasz z Query::OrderByChild() na komputerze, bo inaczej detektory nie będą działać.

Dodatkowe informacje dotyczące konfiguracji na komputerze

Biblioteki systemu Windows

W przypadku systemu Windows wersje bibliotek są udostępniane na podstawie tych informacji:

  • Platforma kompilacji: tryb 32-bitowy (x86) lub 64-bitowy (x64)
  • Środowisko wykonawcze systemu Windows: wielowątkowe / MT a wielowątkowa biblioteka DLL /MD
  • Cel: wersja produkcyjna a wersja do debugowania

Pamiętaj, że te biblioteki zostały przetestowane w Visual Studio 2015 i 2017.

Podczas tworzenia aplikacji komputerowych w C++ na system Windows połącz z projektem te biblioteki Windows SDK. Więcej informacji znajdziesz w dokumentacji kompilatora.

Biblioteka Firebase C++ Zależności biblioteki pakietu SDK dla systemu 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 biblioteki są dostępne na platformę 64-bitową (x86_64). Dla Twojej wygody udostępniamy też platformy.

Pamiętaj, że biblioteki macOS zostały przetestowane za pomocą Xcode 26.2.

Podczas tworzenia aplikacji komputerowych w C++ na macOS połącz z projektem te elementy:

  • pthread biblioteka systemowa
  • CoreFoundation – platforma systemowa macOS
  • Foundation – platforma systemowa macOS
  • Security – platforma systemowa macOS
  • GSS – platforma systemowa macOS
  • Kerberos – platforma systemowa macOS
  • SystemConfiguration – platforma systemowa macOS

Więcej informacji znajdziesz w dokumentacji kompilatora.

Biblioteki Linuksa

W przypadku systemu Linux wersje biblioteki są dostępne na platformy 32-bitowe (i386) i 64-bitowe (x86_64).

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

Podczas tworzenia aplikacji komputerowych w C++ na Linuksie połącz bibliotekę systemową pthread z projektem. Więcej informacji znajdziesz w dokumentacji kompilatora. Jeśli kompilujesz za pomocą GCC 5 lub nowszego, zdefiniuj -D_GLIBCXX_USE_CXX11_ABI=0.

Dalsze kroki