Dodaj Firebase do projektu C++

Ulepsz swoje gry w C++, korzystając z pakietów SDK Firebase C++, które zapewniają interfejs C++ na poziomie pakietów SDK Firebase.

Uzyskaj dostęp do Firebase bezpośrednio z kodu C++, bez konieczności pisania kodu natywnego dla danej platformy. Pakiet SDK Firebase przekształca też wiele idiomów językowych używanych przez Firebase w interfejs bardziej przyjazny deweloperom C++.

Więcej informacji o ulepszaniu gier za pomocą Firebase znajdziesz na stronie z grami Firebase.

Masz już dodaną Firebase do swojego projektu w C++? Upewnij się, że używasz najnowszej wersji pakietu SDK Firebase C++.


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

  • Zaloguj się w Firebase, korzystając ze swojego konta Google.

Krok 2. Utwórz projekt Firebase

Zanim dodasz Firebase do projektu w C++, musisz utworzyć projekt Firebase, który połączysz z tym projektem. Więcej informacji o projektach Firebase znajdziesz w artykule [EN] Understanding Firebase Projects.

Krok 3. Zarejestruj aplikację w Firebase

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

  1. Otwórz konsolę Firebase.

  2. Aby uruchomić przepływ pracy konfiguracji, na środku strony przeglądu projektu kliknij ikonę Androida () lub Dodaj aplikację.

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

  4. (Opcjonalnie) Wpisz inne informacje o aplikacji: pseudonim aplikacjicertyfikat podpisywania debugowania SHA-1.

  5. Kliknij Zarejestruj aplikację.

Krok 4. Dodaj plik konfiguracji Firebase

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

  2. Otwórz swój 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 najwyższego poziomu pliku build.gradle.

    1. Dodaj reguły, aby uwzględnić wtyczkę Gradle Usługi Google. Sprawdź też, czy masz repozytorium Maven 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.2'  // Google Services plugin
            implementation 'com.google.android.gms:18.5.0'
          }
        }
      
        allprojects {
          // ...
      
          repositories {
            // Check that you have the following line (if not, add it):
            google()  // Google's Maven repository
            // ...
          }
        }
      
    2. Zastosowanie wtyczki Google Services Gradle:

        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 są już wykonane. Poniżej dowiedz się więcej o dodawaniu pakietów SDK Firebase C++.

Krok 5. Dodaj pakiety SDK Firebase w C++

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

  1. Pobierz Firebase C++ SDK, a potem rozpakuj go w dogodnym miejscu.

    Pakiet SDK Firebase C++ nie jest związany z konkretną platformą, ale zawiera biblioteki związane z tą platformą.

  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 tę 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. Dodaj do pliku Gradle modułu (na poziomie aplikacji) (zazwyczaj app/build.gradle) te treści:
    Uwzględnij zależność od biblioteki w przypadku usług Firebase, których chcesz używać w aplikacji.

    Włączono kryterium 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
    }

    Analytics 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. Dodaj do pliku CMakeLists.txt projektu te treści.
    Uwzględnij 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}")

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

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

    W dziennikach urządzenia będzie widoczna weryfikacja Firebase, że inicjowanie zostało ukończone. Jeśli aplikacja została uruchomiona na emulatorze z dostępem do sieci, konsola Firebase powiadomi Cię, że połączenie z aplikacją zostało nawiązane.

Wszystko gotowe. Twoja aplikacja w C++ jest zarejestrowana i skonfigurowana pod kątem korzystania z usług Firebase.

Dostępne biblioteki

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

Dostępne biblioteki na Androida (za pomocą CMake)

Pamiętaj, że biblioteki C++ na platformy Apple są wymienione na stronie konfiguracji dla platform Apple (iOS+).

Usługa Firebase Odwołania do bibliotek
(firebaseCpp.dependencies
plik build.gradle)
Odwołania do biblioteki
(firebase_libs
w pliku CMakeLists.txt)
AdMob admob firebase_admob
(wymagane) firebase_analytics
(wymagane) 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
(wymagany) firebase_app
Cloud Storage storage firebase_storage
(wymagane) firebase_app
Dynamic Links dynamicLinks firebase_dynamic_links
(zalecane) firebase_analytics
(wymagany) 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ądzeniu mobilnym

Pobieranie 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 Pobieranie raportów o awariach w NDK na Androida.

niestandardowe systemy kompilacji,

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

Jeśli nie kompilujesz za pomocą Gradle (np. używasz ndk-build, makefiles, Visual Studio itp.), możesz użyć tego skryptu, aby zautomatyzować generowanie Android String Resources.

ProGuard

Wiele systemów kompilacji Androida używa ProGuard do kompilacji w trybie wydania, aby zmniejszać rozmiary aplikacji i chronić kod źródłowy w języku Java.

Jeśli używasz ProGuard, musisz dodać pliki w katalogu libs/android/*.pro odpowiadające bibliotekom Firebase C++, których używasz w konfiguracji ProGuard.

Jeśli np. używasz Gradle 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 dostępne na urządzeniu z Androidem klienta. Jeśli podczas inicjalizacji biblioteka Firebase C++ zwraca wartość kInitResultFailedMissingDependency, oznacza to, że usługi Google Play są niedostępne na urządzeniu klienta (co oznacza, że należy je zaktualizować, ponownie aktywować, poprawić uprawnienia itp.). Biblioteki Firebase nie można używać, dopóki nie poprawisz sytuacji na urządzeniu klienta.

Aby dowiedzieć się, dlaczego Usługi Google Play są niedostępne na urządzeniu klienta (i spróbować rozwiązać ten problem), możesz użyć 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 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 pakietu SDK Google Mobile Ads 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 wymagane są Usługi Google Play.

Inicjowanie AdMob zwraca wartość kInitResultFailedMissingDependency tylko wtedy, gdy są spełnione 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 (beta)

Gdy tworzysz grę, często łatwiej jest najpierw przetestować ją na platformach stacjonarnych, a później wdrożyć i przetestować na urządzeniach mobilnych. Aby umożliwić korzystanie z tego procesu, 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 Firebase
    3. Zarejestruj aplikację (na iOS lub Androida) w Firebase
    4. Dodawanie pliku konfiguracji Firebase na platformę mobilną
  2. Utwórz wersję pliku konfiguracji Firebase na komputer:

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

    • Jeśli dodano plik GoogleService-Info.plist dla iOS – zanim uruchomisz aplikację, musisz przekonwertować ten plik mobilny do pliku konfiguracyjnego 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 komputera zawiera identyfikator projektu C++ wpisany podczas przepływu pracy konfiguracji konsoli Firebase. Więcej informacji o plikach konfiguracji znajdziesz w artykule Informacje o projektach Firebase.

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

    Poniższe kroki to przykład dodawania dowolnej obsługiwanej usługi Firebase do projektu w C++. W tym przykładzie pokazujemy dodawanie znaczników 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 następujące treści, 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++ zawiera obsługę przepływu pracy na komputerze w przypadku podzbioru funkcji, co umożliwia korzystanie z pewnych części Firebase w samodzielnych wersjach 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

Dla wygody użytkowników Firebase udostępnia pozostałe biblioteki na komputery jako wersje skrócone (niefunkcjonalne) podczas tworzenia aplikacji na systemy Windows, macOS i Linux. Dlatego nie musisz warunkowo kompilować kodu pod kątem wersji na komputer.

Realtime Database na komputerze

Pakiet SDK Realtime Database na komputery uzyskuje dostęp do Twojej bazy danych za pomocą REST, dlatego musisz zadeklarować indeksy, których używasz z Query::OrderByChild() na komputerze. W przeciwnym razie odbiorniki przestaną działać.

Dodatkowe informacje o konfiguracji na komputerze

Biblioteki Windows

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

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

Pamiętaj, że biblioteki wymienione poniżej zostały przetestowane przy użyciu Visual Studio w wersjach 2015 i 2017.

Podczas kompilowania aplikacji komputerowych C++ w systemie Windows powiązaj z projektem te biblioteki Windows SDK. Więcej informacji znajdziesz w dokumentacji kompilatora.

Biblioteka Firebase C++ Zależności biblioteki pakietu SDK 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) udostępniane są wersje biblioteki dla platformy 64-bitowej (x86_64). Dla wygody użytkowników udostępniamy również ramy.

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

Podczas kompilowania aplikacji na komputery z systemem C++ na macOS należy połączyć z projektem:

  • pthread biblioteka systemowa
  • CoreFoundation System operacyjny macOS
  • Foundation System operacyjny macOS
  • Platforma systemu macOS Security
  • GSS System operacyjny macOS
  • Kerberos System operacyjny macOS
  • Platforma systemu macOS SystemConfiguration

Więcej informacji znajdziesz w dokumentacji kompilatora.

Biblioteki Linuksa

W przypadku systemu Linux udostępniane są wersje bibliotek na platformy 32-bitowe (i386) i 64-bitowe (x86_64).

Pamiętaj, że biblioteki Linuxa zostały przetestowane za pomocą GCC 4.8.0, GCC 7.2.0 i Clang 5.0 w Ubuntu.

Podczas kompilowania aplikacji komputerowych C++ w systemie Linux połącz bibliotekę systemową pthread z projektem. Więcej informacji znajdziesz w dokumentacji kompilatora. Jeśli tworzysz treści przy użyciu GCC 5 lub nowszej wersji, zdefiniuj -D_GLIBCXX_USE_CXX11_ABI=0.

Dalsze kroki