Catch up on everthing we announced at this year's Firebase Summit. Learn more

Dodaj Firebase do swojego projektu C++

Wzmocnij swoje gry w języku C++ dzięki naszym pakietom SDK Firebase C++, które zapewniają interfejs C++ w dodatku do Firebase dla systemów iOS i Android.

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

Dowiedzieć się więcej informacji na temat włączania zapasowych gier z Firebase na naszej stronie gry Firebase .

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

Warunki wstępne

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

  • Uzyskać Android SDK .

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

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

    • Emulatory musi użyć obrazu emulatora z Google Play.

    • W przypadku niektórych bibliotek C++ na urządzeniu klienckim wymagane są usługi Google Play; przeglądu listy na tej stronie.

  • Zarejestruj się Firebase za pomocą konta Google.

Krok 2: Tworzenie projektu Firebase

Zanim dodasz Firebase do projektu C++, musisz utworzyć projekt Firebase, aby połączyć się z projektem C++. Wizyta Zrozum Firebase Projekty aby dowiedzieć się więcej o projektach Firebase.

Krok 3: Zarejestruj swoją aplikację z Firebase

Aby korzystać z Firebase w swojej 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. W środku strony głównej projektu kliknij ikonę Android ( ) lub Dodaj aplikację, aby uruchomić przepływ pracy instalacji.

  3. Wpisz nazwę pakietu aplikacji w polu Nazwa pakietu Android.

  4. (Opcjonalnie) Wprowadź inne informacje APL: App nick i Debug podpisanie certyfikatu SHA-1.

  5. Kliknij Register 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 plik konfiguracyjny do projektu:

  3. (Gradle buduje tylko) Aby włączyć usługi Firebase w projekcie C ++, dodać google-usług plugin do najwyższego poziomu build.gradle pliku.

    1. Dodaj reguły, aby uwzględnić wtyczkę Google Services Gradle. Sprawdź również, czy masz repozytorium Maven firmy 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.3.10'  // Google Services plugin
            implementation 'com.google.android.gms:17.6.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. Skończyłeś konfigurować zadania w konsoli Firebase. Nadal Dodaj SDK Firebase c ++ poniżej.

Krok 5: Dodaj SDK Firebase c ++

Kroki w tej sekcji są przykładem jak dodać obsługiwane produkty Firebase do projektu swojego Firebase C ++.

  1. Pobierz Firebase C ++ SDK , a następnie rozpakuj SDK gdzieś wygodne.

    Pakiet Firebase C++ SDK nie jest specyficzny dla platformy, ale zawiera biblioteki specyficzne dla platformy.

  2. W projekt jest gradle.properties pliku określ lokalizację rozpakowanym SDK:

    systemProp.firebase_cpp_sdk.dir=full-path-to-SDK
    
  3. Do projektu za settings.gradle pliku 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 modułu (ok szczebla) Gradle plik (zazwyczaj app/build.gradle ), dodaj następującą treść.
    Obejmują zależności bibliotecznych dla produktów Firebase które chcesz użyć w swojej aplikacji.

    Analytics 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 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łą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 projektu za CMakeLists.txt pliku, dodaj następującą treść.
    Zawierać bibliotek dla produktów Firebase które chcesz użyć w swojej aplikacji.

    Analytics 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 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łą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 swoją aplikację, aby upewnić się, że wszystkie zależności mają niezbędne wersje.

  7. Jeśli dodałeś Analytics, uruchom aplikację, aby przesłać do Firebase weryfikację pomyślnej integracji Firebase. W przeciwnym razie możesz pominąć etap weryfikacji.

    W dziennikach urządzenia zostanie wyświetlony komunikat Firebase potwierdzający zakończenie inicjalizacji. Jeśli prowadził swoją aplikację na emulatorze, który ma dostęp do sieci, gdy Firebase konsola powiadamia użytkownika, że połączenie aplikacja jest kompletna.

Wszystko gotowe! Twoja aplikacja C++ jest zarejestrowana i skonfigurowana do korzystania z usług Firebase.

Dostępne biblioteki

Więcej informacji na temat bibliotek C ++ Firebase w dokumentacji referencyjnej iw naszych open source SDK wydaniu na GitHub .

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

Należy zauważyć, że biblioteki C ++ dla systemu iOS są notowane na wersji iOS strony konfiguracji .

Produkt Firebase Referencje biblioteczne
( firebaseCpp.dependencies
dla build.gradle pliku)
Referencje biblioteczne
( firebase_libs
dla CMakeLists.txt pliku)
AdMob admob firebase_admob
(wymagane) firebase_analytics
(wymagane) firebase_app
Analityka analytics firebase_analytics
(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
Dynamiczne linki 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

Otrzymuj raporty o awariach NDK

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

Niestandardowe systemy kompilacji

Firebase zapewnia skryptu generate_xml_from_google_services_json.py przekonwertować google-services.json do .xml zasobów, które można 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 budować z użyciem Gradle (na przykład użyć NDK-Build, Makefile, Visual Studio, etc.), można użyć tego skryptu do zautomatyzowania generacji Androida Zasobów String .

ProGuard

Wiele systemów Android kompilacji używać ProGuard dla buduje w trybie Release, aby zmniejszyć rozmiary aplikacji i chronić kod źródłowy Java.

Jeśli używasz ProGuard, musisz dodać pliki libs/android/*.pro odpowiadające Firebase bibliotek C ++, że jesteś korzystających w swojej konfiguracji PROGUARD.

Na przykład, z Gradle, jeśli używasz Google Analytics, Twoja build.gradle plik będzie wyglądać następująco:

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

Biblioteki najbardziej Firebase C ++ wymaga usługi Google Play , aby być na urządzenia z systemem Android klienta. Jeżeli Firebase c ++ powraca biblioteczne kInitResultFailedMissingDependency na inicjalizacji, to znaczy usługi Google Play nie jest dostępna w urządzeniu klienckim (co oznacza, że musi być aktualizowana, reaktywowany, uprawnienia stałe, itd.). Z biblioteki Firebase nie można korzystać, dopóki sytuacja na urządzeniu klienckim nie zostanie naprawiona.

Można dowiedzieć się, dlaczego usługi Google Play jest dostępna na urządzeniu klienckim (i spróbować go naprawić) za pomocą funkcji w google_play_services/availability.h .

W poniższej tabeli wymieniono, 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 są wymagane na urządzeniu klienckim?
AdMob Nie wymagane (zazwyczaj)
Analityka Nie wymagane
Uwierzytelnianie Wymagany
Cloud Firestore Wymagany
Funkcje chmury Wymagany
Wiadomości w chmurze Wymagany
Magazyn w chmurze Wymagany
Dynamiczne linki 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. Jednakże, jeśli używasz com.google.android.gms:play-services-ads-lite zależności, zamiast standardowego com.google.firebase:firebase-ads zależnościami wymienione powyżej, wymagane są usługi Google Play.

AdMob inicjalizacji będzie tylko powrót kInitResultFailedMissingDependency gdy oba są spełnione następujące warunki:

  • Usługi Google Play są niedostępne na urządzeniu klienckim.
  • Używasz com.google.android.gms:play-services-ads-lite .

Skonfiguruj obieg pulpitu (beta)

Kiedy tworzysz grę, często dużo łatwiej jest najpierw przetestować ją na platformach stacjonarnych, a następnie wdrożyć i przetestować na urządzeniach mobilnych na późniejszym etapie tworzenia. Aby wesprzeć ten przepływ pracy, zapewniamy podzbiór SDK Firebase c ++ , który można uruchomić w systemie Windows, MacOS, Linux i od wewnątrz C ++ edytora.

  1. W przypadku przepływów pracy na komputerze musisz wykonać następujące czynności:

    1. Skonfiguruj projekt C++ dla CMake.
    2. Utwórz projekt Firebase
    3. Zarejestruj swoją aplikację (iOS lub Android) w Firebase
    4. Dodaj plik konfiguracyjny Firebase dla platformy mobilnej
  2. Tworzenie komputerowej wersji pliku konfiguracyjnego Firebase:

    • Jeśli dodano Android google-services.json plik - Po uruchomieniu aplikacji, Firebase lokalizuje ten plik mobilnego, a następnie automatycznie generuje pulpitu Firebase plik konfiguracyjny ( google-services-desktop.json ).

    • Jeśli dodałeś iOS GoogleService-Info.plist plik - Przed uruchomieniem aplikacji, trzeba przekonwertować ten plik na pulpicie mobilnego Firebase pliku konfiguracyjnym. Aby przekonwertować plik, uruchom następujące polecenie z tym samym katalogu, co GoogleService-Info.plist pliku:

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

    Ten plik konfiguracyjny na komputery stacjonarne zawiera identyfikator projektu w języku C++ wprowadzony w przepływie pracy konfiguracji konsoli Firebase. Wizyta Zrozum Firebase Projekty aby dowiedzieć się więcej o plikach konfiguracyjnych.

  3. Dodaj pakiety SDK Firebase do projektu w języku C++.

    Poniższe kroki służą jako przykład, jak dodać dowolny obsługiwany produkt Firebase do projektu C ++. W tym przykładzie omówimy dodawanie Uwierzytelniania Firebase i Bazy danych czasu rzeczywistego Firebase.

    1. Ustaw FIREBASE_CPP_SDK_DIR zmienną środowiskową do lokalizacji rozpakowanym Firebase C ++ SDK.

    2. Do projektu za CMakeLists.txt pliku dodaj następującą zawartość, w tym bibliotek dla produktów Firebase, które 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ę w języku C++.

Dostępne biblioteki (komputer stacjonarny)

Firebase C ++ SDK zawiera pulpitu wsparcie przepływu pracy dla podzbioru cech, dzięki czemu pewne części Firebase być stosowane w autonomicznej opiera się na pulpicie Windows, MacOS i Linux.

Produkt Firebase Odniesienia do bibliotek (za pomocą CMake)
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 udostępnia pozostałe biblioteki komputerowe jako implementacje skrótowe (niefunkcjonalne) dla wygody podczas kompilowania dla systemów Windows, macOS i Linux. Dlatego nie musisz warunkowo kompilować kodu, aby kierować go na pulpit.

Pulpit bazy danych czasu rzeczywistego

SDK bazy danych w czasie rzeczywistym na pulpicie używa REST, aby uzyskać dostęp do bazy danych, więc trzeba zadeklarować indeksy , które korzystają z Query::OrderByChild() na pulpicie lub twoi słuchacze nie powiedzie się.

Dodatkowe informacje dotyczące konfiguracji pulpitu

Biblioteki Windows

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

  • Platforma kompilacji: tryb 32-bitowy (x86) vs 64-bitowy (x64)
  • Środowisko uruchomieniowe Windows: wielowątkowy / MT vs wielowątkowy DLL / MD
  • Cel: wydanie a debugowanie

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

Podczas tworzenia aplikacji klasycznych C++ w systemie Windows połącz z projektem następujące biblioteki Windows SDK. Więcej informacji znajdziesz w dokumentacji kompilatora.

Biblioteka Firebase C++ Zależności biblioteki Windows SDK
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). Ramy są również dostępne dla Twojej wygody.

Zwróć uwagę, że biblioteki macOS zostały przetestowane przy użyciu Xcode 12.

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

  • pthread biblioteka systemowa
  • CoreFoundation ramy systemu MacOS
  • Foundation ramy systemu MacOS
  • Security ramy systemu MacOS
  • GSS ramy systemu MacOS
  • Kerberos ramy systemu MacOS
  • SystemConfiguration ramy systemu MacOS

Więcej informacji znajdziesz w dokumentacji kompilatora.

Biblioteki linuksowe

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

Zauważ, że biblioteki Linux były testowane przy użyciu GCC 4.8.0, GCC 7.2.0 i Clang 5.0 na Ubuntu.

Podczas budowania c ++ aplikacji pulpitu w systemie Linux, połączyć pthread biblioteki systemowej do projektu. Więcej informacji znajdziesz w dokumentacji kompilatora. Jeśli budujesz z GCC 5 lub nowszym, definiować -D_GLIBCXX_USE_CXX11_ABI=0 .

Następne kroki