Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

Dodaj Firebase do swojego projektu C++

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

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 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.14'  // Google Services plugin
            implementation 'com.google.android.gms:18.1.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. 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 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 pliku Gradle modułu (na poziomie aplikacji) (zwykle app/build.gradle ) dodaj następującą zawartość.
    Uwzględnij zależności bibliotek produktów Firebase, których chcesz używać w swojej aplikacji.

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

    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 pliku CMakeLists.txt projektu dodaj następującą zawartość.
    Dołącz 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 witrynie 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 Referencje biblioteczne
( firebaseCpp.dependencies
dla pliku build.gradle )
Referencje biblioteczne
( firebase_libs
dla pliku CMakeLists.txt )
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 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 Firebase 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
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. 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 kInitResultFailedMissingDependency tylko wtedy, 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 dla 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 zmienną ś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)
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 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
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 13.3.1.

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 klasycznych 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