Check out what’s new from Firebase@ Google I/O 2021, and join our alpha program for early access to the new Remote Config personalization feature. Learn more

Dodaj Firebase do swojego projektu C++

Wzmocnij swoje gry C++ dzięki naszym pakietom SDK Firebase C++, które zapewniają interfejs C++ w dodatku do Firebase na iOS i Androida.

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++.

Więcej informacji na temat zwiększania mocy gier za pomocą Firebase znajdziesz na naszej stronie gier Firebase .

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

Warunki wstępne

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

  • Uzyskaj 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 w Google Play.

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

  • Zaloguj się do Firebase przy użyciu swojego konta Google.

Krok 2 : utwórz projekt Firebase

Zanim dodasz Firebase do projektu C++, musisz utworzyć projekt Firebase, aby połączyć się z projektem C++. Odwiedź Zrozumienie projektów Firebase, aby dowiedzieć się więcej o projektach Firebase.

Krok 3 : Zarejestruj swoją aplikację w 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. Na środku strony przeglądu projektu kliknij ikonę Androida ( ) lub Dodaj aplikację, aby uruchomić przepływ pracy instalacji.

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

  4. (Opcjonalnie) Podaj inne informacje o aplikacji: pseudonim aplikacji i certyfikat podpisywania debugowania SHA-1 .

  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 plik konfiguracyjny do projektu:

  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ę 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.8'  // 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. Przejdź do sekcji Dodaj pakiety SDK Firebase C++ poniżej.

Krok 5. Dodaj pakiety SDK Firebase C++

Czynności opisane w tej sekcji stanowią przykład dodawania obsługiwanych produktów Firebase do projektu Firebase C++.

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

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

  2. Określ lokalizację rozpakowanego pakietu SDK w pliku gradle.properties projektu:

    systemProp.firebase_cpp_sdk.dir=full-path-to-SDK
    
  3. Dodaj następujące elementy do pliku settings.gradle swojego projektu:

    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 następujące elementy do pliku Gradle modułu (na poziomie aplikacji) (zwykle app/build.gradle ):

    android.defaultConfig.externalNativeBuild.cmake {
      arguments "-DFIREBASE_CPP_SDK_DIR=$gradle.firebase_cpp_sdk_dir"
    }
    
    apply from: "$gradle.firebase_cpp_sdk_dir/Android/firebase_dependencies.gradle"
    firebaseCpp.dependencies {
      analytics
    }
    
  5. Do pliku CMakeLists.txt projektu dodaj następującą zawartość, w tym biblioteki produktów Firebase, których chcesz używać w swojej aplikacji.

    Analiza 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}")
    

    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ę, że udało Ci się zintegrować 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 aplikacja została uruchomiona w emulatorze, który ma dostęp do sieci, konsola Firebase powiadomi Cię, że połączenie aplikacji zostało zakończone.

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

Dostępne biblioteki

Dowiedz się więcej o bibliotekach C++ Firebase w dokumentacji referencyjnej oraz w naszym wydaniu SDK typu open source w serwisie GitHub .

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

Zwróć uwagę, że biblioteki C++ dla systemu iOS są wymienione na tej stronie konfiguracji dla systemu iOS .

Produkt Firebase Odniesienia do bibliotek (za pomocą CMake)
AdMob firebase_admob
(wymagane) firebase_analytics
(wymagane) firebase_app
Analityka firebase_analytics
(wymagane) firebase_app
Poświadczenie firebase_auth
(wymagane) firebase_app
Cloud Firestore (beta) firebase_firestore
(wymagane) firebase_app
(wymagane) firebase_auth
Funkcje chmury firebase_functions
(wymagane) firebase_app
Wiadomości w chmurze firebase_messaging
(zalecane) firebase_analytics
(wymagane) firebase_app
Magazyn w chmurze firebase_storage
(wymagane) firebase_app
Dynamiczne linki firebase_dynamic_links
(zalecane) firebase_analytics
(wymagane) firebase_app
Baza danych czasu rzeczywistego firebase_database
(wymagane) firebase_app
Zdalna konfiguracja 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 Pobieranie raportów o awariach Android NDK .

Niestandardowe systemy kompilacji

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

Jeśli nie budujesz przy użyciu Gradle (na przykład używasz ndk-build, makefiles, Visual Studio itp.), możesz użyć tego skryptu do zautomatyzowania generowania zasobów ciągów Androida .

ProGuard

Wiele systemów kompilacji Android używa funkcji ProGuard do kompilacji w trybie wydania w celu zmniejszenia rozmiarów aplikacji i ochrony kodu źródłowego 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.

Na przykład w Gradle, jeśli korzystasz z 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 na urządzeniu z Androidem klienta. Jeśli biblioteka kInitResultFailedMissingDependency C++ zwraca kInitResultFailedMissingDependency podczas inicjalizacji, oznacza to, że usługi Google Play nie są dostępne na urządzeniu klienckim (co oznacza, że ​​należy je zaktualizować, ponownie aktywować, naprawić uprawnienia itp.). Z biblioteki Firebase nie można korzystać, dopóki sytuacja na urządzeniu klienckim nie zostanie naprawiona.

Możesz dowiedzieć się, dlaczego usługi Google Play są niedostępne na urządzeniu klienckim (i spróbować to naprawić), korzystając z 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 Niewymagane (zwykle)
Analityka Nie wymagane
Poświadczenie 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. 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 .

Inicjalizacja AdMob zwróci wartość kInitResultFailedMissingDependency tylko kInitResultFailedMissingDependency gdy spełnione są oba poniższe warunki:

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

Skonfiguruj przepływ pracy na komputerze ( beta )

Kiedy tworzysz grę, często znacznie ł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 obsłużyć ten przepływ pracy, udostępniamy podzbiór zestawów SDK Firebase C++, które można uruchamiać w systemach Windows, macOS, Linux oraz w edytorze C++.

  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. Utwórz komputerową wersję pliku konfiguracyjnego Firebase:

    • Jeśli dodałeś plik google-services.json systemu Android — po uruchomieniu aplikacji Firebase zlokalizuje ten plik mobilny , a następnie automatycznie wygeneruje plik konfiguracyjny Firebase dla komputerów stacjonarnych ( google-services-desktop.json ).

    • Jeśli dodałeś plik GoogleService-Info.plist systemu iOS – przed uruchomieniem aplikacji musisz przekonwertować ten plik mobilny na plik konfiguracyjny Firebase dla komputerów . Aby przekonwertować plik, uruchom następujące polecenie z tego samego katalogu, co plik GoogleService-Info.plist :

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

    Ten plik konfiguracyjny na komputery stacjonarne zawiera identyfikator projektu C++ wprowadzony w przepływie pracy konfiguracji konsoli Firebase. Odwiedź Zrozumienie projektów Firebase, aby dowiedzieć się więcej o plikach konfiguracyjnych.

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

    Poniższe kroki stanowią przykład tego, 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 środowiskową FIREBASE_CPP_SDK_DIR na lokalizację rozpakowanego pakietu Firebase C++ SDK.

    2. Do pliku CMakeLists.txt projektu dodaj następującą zawartość, w tym biblioteki produktów Firebase, których 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)

Pakiet Firebase C++ SDK obejmuje obsługę przepływów pracy na pulpicie dla podzbioru funkcji, dzięki czemu niektóre części Firebase mogą być używane w samodzielnych kompilacjach pulpitu w systemach Windows, macOS i Linux.

Produkt Firebase Odniesienia do bibliotek (za pomocą CMake)
Poświadczenie firebase_auth
(wymagane) firebase_app
Cloud Firestore (beta) 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 dla komputerów stacjonarnych 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

Zestaw SDK bazy danych czasu rzeczywistego dla komputerów stacjonarnych używa REST w celu uzyskania dostępu do bazy danych, więc musisz zadeklarować indeksy , których używasz z Query::OrderByChild() na komputerze stacjonarnym, w przeciwnym razie odbiorniki ulegną awarii.

Dodatkowe informacje dotyczące konfiguracji pulpitu

Biblioteki Windows

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

  • Platforma kompilacji: tryb 32-bitowy (x86) vs 64-bitowy (x64)
  • Środowisko wykonawcze 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 bibliotek Windows SDK
Poświadczenie 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 z projektem:

  • biblioteka systemowa pthread
  • Framework systemu macOS CoreFoundation
  • Foundation struktura systemu macOS
  • Security Framework systemu macOS
  • Struktura systemu GSS macOS
  • Struktura systemu Kerberos macOS
  • SystemConfiguration systemu Struktura 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 tworzenia aplikacji pthread C++ w systemie Linux połącz bibliotekę systemową pthread z projektem. Więcej informacji znajdziesz w dokumentacji kompilatora. Jeśli tworzysz z GCC 5 lub nowszym, zdefiniuj -D_GLIBCXX_USE_CXX11_ABI=0 .

Następne kroki