Dodaj Firebase do projektu C++

Ulepsz swoje gry w C++ za pomocą naszych pakietów Firebase C++ SDK, które zapewniają interfejs C++ na pakietach Firebase SDK.

Uzyskaj 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, których używa Firebase, na interfejs bardziej znany deweloperom C++.

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

Czy Firebase został 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:

  • 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++ na urządzeniu klienta wymagane są usługi Google Play. Zapoznaj się z listą na tej stronie.

  • Zaloguj się w Firebase, używając 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.

  1. Otwórz Firebasekonsolę.

  2. W centrum strony „Opis” projektu kliknij ikonę Android lub Dodaj aplikację, aby uruchomić proces konfiguracji.

  3. Wpisz nazwę pakietu aplikacji w polu Nazwa pakietu na Androida.

  4. (Opcjonalnie) wpisz inne informacje o aplikacji: pseudonim aplikacjiskrót SHA-1 certyfikatu podpisywania do debugowania.

  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 projekt C++ w IDE, a następnie dodaj do niego plik konfiguracyjny:

  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ę 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.4.3'  // Google Services plugin
            implementation 'com.google.android.gms:18.7.2'
          }
        }
      
        allprojects {
          // ...
      
          repositories {
            // Check that you have the following line (if not, add it):
            google()  // Google's Maven repository
            // ...
          }
        }
      
    2. 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 {
          // ...
        }
      
  4. 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++.

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

    Pakiet SDK Firebase C++ nie jest przeznaczony dla konkretnej platformy, ale zawiera biblioteki specyficzne dla poszczególnych 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) (zazwyczaj 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
    }
  5. Dodaj do pliku CMakeLists.txt projektu 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}")
  6. Zsynchronizuj aplikację, aby wszystkie zależności na pewno miały odpowiednie wersje.

  7. Jeśli dodasz Analytics, uruchom aplikację, aby wysłać do Firebase weryfikację, że udało Ci się zintegrować Firebase. W przeciwnym razie możesz pominąć krok weryfikacji.

    W logach urządzenia pojawi się informacja o weryfikacji Firebase, że inicjowanie zostało zakończone. 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 C++ znajdziesz w dokumentacji i w naszej wersji SDK open source na GitHubie.

Dostępne biblioteki na Androida (z użyciem CMake)

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

Usługa Firebase Odniesienia do biblioteki
(firebaseCpp.dependencies
w przypadku pliku build.gradle)
Odniesienia do biblioteki
(firebase_libs
w 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

Uzyskiwanie 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 NDK na Androidzie.

Niestandardowe systemy kompilacji

Firebase udostępnia skrypt generate_xml_from_google_services_json.py, który umożliwia przekształcenie zasobów google-services.json w zasoby .xml, które możesz uwzględnić w projekcie. Ten skrypt stosuje taką samą transformację jak wtyczka Gradle usług Google Play podczas tworzenia 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 znaków Androida.

ProGuard

Wiele systemów kompilacji na Androida używa ProGuarda w przypadku 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, a w pliku Google Analytics masz wpis build.gradle, plik 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 klienta (co oznacza, że trzeba je zaktualizować, ponownie aktywować, naprawić uprawnienia itp.). Z biblioteki Firebase nie można korzystać, 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 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 proces, udostępniamy podzbiór pakietów SDK Firebase C++, które mogą działać 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 Firebase
    3. Zarejestruj aplikację (na iOS lub Androida) w Firebase
    4. Dodawanie pliku konfiguracyjnego Firebase na platformę mobilną
  2. Utwórz wersję na komputery pliku konfiguracyjnego Firebase:

    • Jeśli dodasz plik google-services.json na 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.plist na 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 plik GoogleService-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.

  3. 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ć tagi Firebase AuthenticationFirebase Realtime Database.

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

    2. Do pliku CMakeLists.txt projektu 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 AuthenticationFirebase 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++ 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_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 w postaci implementacji typu stub (niefunkcjonalnych), aby ułatwić tworzenie aplikacji na Windowsa, macOS i Linuksa. 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 bibliotek 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 pakietu 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 16.2.

Podczas tworzenia aplikacji na komputery z systemem macOS w języku C++ 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 bibliotek są udostępniane na platformy 32-bitowe (i386) i 64-bitowe (x86_64).

Pamiętaj, że biblioteki Linuxa były testowane przy użyciu GCC 4.8.0, GCC 7.2.0 i Clang 5.0 w systemie Ubuntu.

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 tworzysz aplikację za pomocą GCC w wersji 5 lub nowszej, zdefiniuj -D_GLIBCXX_USE_CXX11_ABI=0.

Dalsze kroki