Dodaj Firebase do projektu C++

Zwiększ skuteczność swoich gier w C++ dzięki pakietom SDK Firebase C++, które oprócz pakietów SDK Firebase zapewniają interfejs C++.

Uzyskaj dostęp do Firebase całkowicie z poziomu kodu C++ bez konieczności pisania kodu natywnego dla platformy. Przekształca on też wiele identyfikatorów w określonych językach używanych przez Firebase na interfejs bardziej znany programistom C++.

Więcej informacji o wzbogacaniu gier dzięki Firebase znajdziesz na stronie gier w 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, takie jak Android Studio, IntelliJ lub VS Code.

  • Pobierz pakiet SDK na Androida.

  • Sprawdź, czy Twój projekt spełnia te 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 są wymagane Usługi Google Play. Zajrzyj na 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 i połączyć go z tym projektem w C++. Więcej informacji o projektach Firebase znajdziesz w artykule Omówienie projektów Firebase.

Krok 3. Zarejestruj aplikację w Firebase

Aby używać Firebase w swojej aplikacji na Androida, musisz ją zarejestrować w projekcie Firebase. Rejestracja aplikacji często nazywa się „dodaniem” jej 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. Wpisz nazwę pakietu aplikacji w polu Nazwa pakietu na Androida.

  4. (Opcjonalnie) Wpisz inne informacje o aplikacji: Pseudonim aplikacji i Certyfikat podpisywania debugowania SHA-1.

  5. Kliknij Zarejestruj aplikację.

Krok 4. Dodaj plik konfiguracji Firebase

  1. Kliknij Pobierz google-services.json, aby uzyskać plik konfiguracyjny 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 pliku build.gradle najwyższego poziomu.

    1. Dodaj reguły, aby uwzględnić wtyczkę Gradle usług Google. Sprawdź też, czy masz 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.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. Zastosuj wtyczkę Gradle usług Google:

        apply plugin: 'com.android.application'
        // Add the following line:
        apply plugin: 'com.google.gms.google-services'  // Google Services plugin
      
        android {
          // ...
        }
      
  4. Masz już za sobą konfigurowanie w konsoli Firebase. Przejdź do sekcji Dodawanie pakietów SDK Firebase w C++ poniżej.

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 pakiet SDK Firebase w C++, a potem rozpakuj go w dogodnym miejscu.

    Pakiet SDK Firebase w 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. Do pliku Gradle modułu (na poziomie aplikacji) (zwykle app/build.gradle) dodaj te treści.
    Podaj zależności bibliotek dla usług Firebase, których chcesz używać w 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
    }
    

    Statystyki nie są włączone

    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 poniższą treść.
    Dołącz biblioteki usług Firebase, których chcesz używać w 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}")
    

    Statystyki nie są włączone

    # 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 masz już dodaną usługę Analytics, uruchom aplikację, aby wysłać do Firebase potwierdzenie, że udało Ci się zintegrować Firebase. W przeciwnym razie możesz pominąć etap weryfikacji.

    W dziennikach urządzenia będzie widoczna weryfikacja Firebase, że inicjowanie zostało ukończone. Jeśli uruchomiłeś aplikację za pomocą emulatora z dostępem do sieci, konsola Firebase powiadomi Cię, że połączenie z aplikacją zostało zakończone.

Wszystko gotowe. 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 oraz w naszym pakiecie SDK typu open source w serwisie GitHub.

Biblioteki dostępne na Androida (przy użyciu CMake)

Biblioteki C++ dla platform Apple są wymienione na tej stronie konfiguracji na platformach Apple (iOS+).

Usługa Firebase Odwołania do bibliotek
(firebaseCpp.dependencies
plik build.gradle)
Odwołania do bibliotek
(firebase_libs
plik CMakeLists.txt)
AdMob admob firebase_admob
(wymagane) firebase_analytics
(wymagane) firebase_app
Analytics analytics firebase_analytics
(wymagane) firebase_app
Sprawdzanie aplikacji 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 Cloud functions firebase_functions
(wymagane) firebase_app
Komunikacja w chmurze messaging firebase_messaging
(zalecane) firebase_analytics
(wymagane) firebase_app
Cloud Storage, 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 na temat konfiguracji telefonu komórkowego

Otrzymuj raporty o awariach NDK

Firebase Crashlytics obsługuje raporty o awariach aplikacji korzystających z natywnych bibliotek Androida. Więcej informacji znajdziesz w sekcji Pobieranie raportów o awariach Androida NDK.

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 te same przekształcenia, które wtyczka do usług Google Play do Gradle wykonuje podczas tworzenia aplikacji na Androida.

Jeśli nie tworzysz kodu za pomocą Gradle (np. używasz ndk-build, Makefiles, Visual Studio itp.), możesz użyć tego skryptu, aby zautomatyzować generowanie zasobów ciągów tekstowych Androida.

ProGuard

Wiele systemów kompilacji na Androida korzysta z ProGuard przy kompilacjach w trybie wydania, by zmniejszyć rozmiar aplikacji i chronić kod źródłowy Java.

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

Na przykład w przypadku Gradle, jeśli używasz 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 w C++ wymaga, aby Usługi Google Play były zainstalowane na urządzeniu z Androidem klienta. Jeśli przy inicjowaniu biblioteka Firebase C++ zwraca wartość kInitResultFailedMissingDependency, oznacza to, że Usługi Google Play są niedostępne na urządzeniu klienckim (co oznacza, że wymagają aktualizacji, ponownego aktywowania, poprawienia uprawnień itp.). Z biblioteki Firebase nie można korzystać, dopóki sytuacja na urządzeniu klienta nie zostanie poprawiona.

Aby dowiedzieć się, dlaczego Usługi Google Play są niedostępne na urządzeniu klienckim (i spróbować rozwiązać ten problem), użyj funkcji dostępnych w narzędziu google_play_services/availability.h.

W tabeli poniżej znajdziesz informacje o tym, czy usługi Google Play są wymagane na urządzeniu klienckim w przypadku każdej obsługiwanej usługi Firebase.

Biblioteka Firebase C++ Na urządzeniu klienckim są wymagane usługi Google Play?
AdMob Niewymagane (zazwyczaj)
Analityka Niewymagane
Uwierzytelnianie Wymagane
Cloud Firestore Wymagane
Cloud Functions Wymagane
Komunikacja w chmurze Wymagane
Cloud Storage Wymagane
Linki dynamiczne Wymagane
Baza danych czasu rzeczywistego Wymagane
Zdalna konfiguracja Wymagane

AdMob i Usługi Google Play

Większość wersji pakietu SDK do reklam mobilnych Google na Androida działa prawidłowo 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.

Zainicjowanie AdMob zwraca wartość kInitResultFailedMissingDependency tylko wtedy, gdy są spełnione oba te warunki:

  • Usługi Google Play są niedostępne na urządzeniu klienckim.
  • 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 ułatwić ten przepływ pracy, udostępniamy podzbiór pakietów SDK Firebase w C++, które mogą działać w systemach Windows, macOS i Linux oraz w edytorze C++.

  1. W przypadku pracy na komputerze musisz wykonać te czynności:

    1. Skonfiguruj projekt C++ pod kątem CMake.
    2. Tworzenie projektu Firebase
    3. Rejestrowanie aplikacji (na iOS lub Androida) za pomocą Firebase
    4. Dodaj plik konfiguracji Firebase platformy mobilnej
  2. Utwórz wersję komputerową pliku konfiguracji Firebase:

    • Jeśli dodano plik google-services.json dotyczący Androida – gdy uruchomisz aplikację, Firebase znajdzie ten plik mobilny, a następnie automatycznie wygeneruje plik konfiguracyjny Firebase na komputery (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 na komputery zawiera identyfikator projektu C++ podany podczas konfiguracji konsoli Firebase. Więcej informacji o plikach konfiguracji znajdziesz w artykule Omówienie projektów 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 opisujemy, jak dodać Uwierzytelnianie Firebase i Bazę danych czasu rzeczywistego Firebase.

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

    2. Do pliku CMakeLists.txt projektu dodaj poniższą treść, w tym biblioteki usług Firebase, których chcesz używać. 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ę w języku C++.

Dostępne biblioteki (na komputerze)

Pakiet Firebase C++ SDK obejmuje obsługę przepływu pracy na komputerach w przypadku podzbioru funkcji, dzięki czemu niektóre części Firebase mogą być używane w samodzielnych kompilacjach na komputery z systemami Windows, macOS i Linux.

Usługa Firebase Odwołania do bibliotek (przy użyciu CMake)
Sprawdzanie aplikacji firebase_app_check
(wymagane) firebase_app
Uwierzytelnianie firebase_auth
(wymagane) firebase_app
Cloud Firestore firebase_firestore
firebase_auth
firebase_app
Funkcje Cloud firebase_functions
(wymagane) firebase_app
Cloud Storage, firebase_storage
(wymagane) firebase_app
Baza danych czasu rzeczywistego firebase_database
(wymagane) firebase_app
Zdalna konfiguracja 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. Dzięki temu nie musisz warunkowo kompilować kodu kierowanego na komputer.

Baza danych czasu rzeczywistego (Realtime Database) na komputerze

Pakiet SDK bazy danych czasu rzeczywistego na komputery uzyskuje dostęp do 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 konfigurowaniu ustawień na komputerze

Biblioteki systemu Windows

W przypadku systemu Windows wersje bibliotek są dostarczane w oparciu o te ustawienia:

  • Platforma kompilacji: tryb 32-bitowy (x86) i 64-bitowy (x64)
  • Środowisko wykonawcze Windows: wielowątkowa / MT a wielowątkowa biblioteka 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.

Gdy tworzysz aplikacje komputerowe w C++ w systemie Windows, połącz z projektem poniższe biblioteki pakietu Windows SDK. Więcej informacji znajdziesz w dokumentacji kompilatora.

Biblioteka Firebase C++ Zależności bibliotek Windows SDK
Sprawdzanie aplikacji advapi32, ws2_32, crypt32
Uwierzytelnianie 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
Baza danych czasu rzeczywistego advapi32, ws2_32, crypt32, iphlpapi, psapi, userenv
Zdalna konfiguracja advapi32, ws2_32, crypt32, rpcrt4, ole32

Biblioteki systemu macOS

W przypadku systemu macOS (Darwin) udostępniane są wersje biblioteki dla platformy 64-bitowej (x86_64). Dla Twojej wygody zapewniamy również platformy.

Biblioteki systemu macOS zostały przetestowane przy użyciu Xcode 13.3.1.

Podczas tworzenia aplikacji komputerowych w języku C++ w systemie macOS połącz z projektem te elementy:

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

Więcej informacji znajdziesz w dokumentacji kompilatora.

Biblioteki Linuksa

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

Zwróć uwagę, że biblioteki Linuksa zostały przetestowane w GCC 4.8.0, GCC 7.2.0 i Clang 5.0 w systemie Ubuntu.

Gdy tworzysz aplikacje komputerowe w C++ na Linuksie, połącz bibliotekę systemową pthread ze swoim 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