Firebase'i C++ projenize ekleyin

Firebase SDK'larının üzerinde bir C++ arayüzü sağlayan Firebase C++ SDK'larımızla C++ oyunlarınızı güçlendirin.

Firebase'e platformda yerel kod yazmanıza gerek kalmadan tamamen C++ kodunuzdan erişin. Firebase SDK ayrıca Firebase tarafından kullanılan birçok dile özgü deyimi C++ geliştiricilerinin daha aşina olduğu bir arayüze çevirir.

Firebase oyunları sayfamızdan oyunlarınızı Firebase ile güçlendirme hakkında daha fazla bilgi edinin.

Firebase'i C++ projenize zaten eklediniz mi? Firebase C++ SDK'nın en son sürümünü kullandığınızdan emin olun.

Önkoşullar

  • Android Studio, IntelliJ veya VS Code gibi tercih ettiğiniz düzenleyiciyi veya IDE'yi yükleyin.

  • Android SDK'yı edinin.

  • Projenizin şu gereksinimleri karşıladığından emin olun:

  • Uygulamanızı çalıştırmak için fiziksel bir cihaz kurun veya bir emülatör kullanın.

    • Emülatörlerin Google Play'de bir emülatör resmi kullanması gerekir.

    • Bazı C++ kitaplıkları için istemci cihazda Google Play hizmetleri gereklidir; bu sayfadaki listeyi inceleyin.

  • Google hesabınızı kullanarak Firebase'de oturum açın .

2. Adım : Firebase projesi oluşturun

Firebase'i C++ projenize ekleyebilmeniz için önce C++ projenize bağlanacak bir Firebase projesi oluşturmanız gerekir. Firebase projeleri hakkında daha fazla bilgi edinmek için Firebase Projelerini Anlayın sayfasını ziyaret edin.

3. Adım : Uygulamanızı Firebase'e kaydedin

Firebase'i Android uygulamanızda kullanmak için uygulamanızı Firebase projenize kaydetmeniz gerekir. Uygulamanızı kaydetmeye genellikle uygulamanızı projenize "eklemek" denir.

  1. Firebase konsoluna gidin.

  2. Kurulum iş akışını başlatmak için projeye genel bakış sayfasının ortasındaki Android simgesine ( ) veya Uygulama ekle öğesine tıklayın.

  3. Android paket adı alanına uygulamanızın paket adını girin.

  4. (İsteğe bağlı) Diğer uygulama bilgilerini girin: Uygulama takma adı ve Hata Ayıklama imzalama sertifikası SHA-1 .

  5. Uygulamayı kaydet'i tıklayın.

4. Adım : Firebase yapılandırma dosyasını ekleyin

  1. Firebase Android yapılandırma dosyanızı edinmek için Google-services.json'u İndir'i tıklayın.

  2. C++ projenizi bir IDE'de açın, ardından yapılandırma dosyanızı projenize ekleyin:

  3. (Yalnızca Gradle derlemeleri) C++ projenizde Firebase hizmetlerini etkinleştirmek için google-services eklentisini üst düzey build.gradle dosyanıza ekleyin.

    1. Google Services Gradle eklentisini içerecek kurallar ekleyin. Google'ın Maven deposuna da sahip olduğunuzdan emin olun.

        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.1'  // Google Services plugin
            implementation 'com.google.android.gms:18.3.0'
          }
        }
      
        allprojects {
          // ...
      
          repositories {
            // Check that you have the following line (if not, add it):
            google()  // Google's Maven repository
            // ...
          }
        }
      
    2. Google Services Gradle eklentisini uygulayın:

        apply plugin: 'com.android.application'
        // Add the following line:
        apply plugin: 'com.google.gms.google-services'  // Google Services plugin
      
        android {
          // ...
        }
      
  4. Firebase konsolunda kurulum görevlerini tamamladınız. Aşağıdaki Firebase C++ SDK'larını eklemeye devam edin.

5. Adım : Firebase C++ SDK'larını ekleyin

Bu bölümdeki adımlar, desteklenen Firebase ürünlerini Firebase C++ projenize nasıl ekleyeceğinize dair bir örnektir.

  1. Firebase C++ SDK'yı indirin ve ardından SDK'yı uygun bir yere açın.

    Firebase C++ SDK'sı platforma özgü değildir ancak platforma özgü kitaplıklar içerir.

  2. Projenizin gradle.properties dosyasında sıkıştırılmış SDK'nın konumunu belirtin:

    systemProp.firebase_cpp_sdk.dir=full-path-to-SDK
    
  3. Projenizin settings.gradle dosyasına aşağıdaki içeriği ekleyin:

    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. Modülünüzün (uygulama düzeyi) Gradle dosyasına (genellikle app/build.gradle ), aşağıdaki içeriği ekleyin.
    Uygulamanızda kullanmak istediğiniz Firebase ürünlerine ilişkin kitaplık bağımlılıklarını ekleyin.

    Analitik etkin

    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
    }
    

    Analiz etkinleştirilmedi

    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. Projenizin CMakeLists.txt dosyasına aşağıdaki içeriği ekleyin.
    Uygulamanızda kullanmak istediğiniz Firebase ürünlerine ait kitaplıkları ekleyin.

    Analitik etkin

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

    Analiz etkinleştirilmedi

    # 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. Tüm bağımlılıkların gerekli sürümlere sahip olduğundan emin olmak için uygulamanızı senkronize edin.

  7. Analytics'i eklediyseniz Firebase'i başarıyla entegre ettiğinize dair doğrulamayı Firebase'e göndermek için uygulamanızı çalıştırın. Aksi takdirde doğrulama adımını atlayabilirsiniz.

    Cihaz günlükleriniz, başlatmanın tamamlandığını gösteren Firebase doğrulamasını gösterecektir. Uygulamanızı ağ erişimi olan bir emülatörde çalıştırdıysanız Firebase konsolu , uygulama bağlantınızın tamamlandığını size bildirir.

Hazırsınız! C++ uygulamanız Firebase hizmetlerini kullanacak şekilde kaydedildi ve yapılandırıldı.

Mevcut kütüphaneler

Referans belgelerinde ve GitHub'daki açık kaynaklı SDK sürümümüzde C++ Firebase kitaplıkları hakkında daha fazla bilgi edinin.

Android için mevcut kütüphaneler (CMake kullanılarak)

Apple platformlarına yönelik C++ kitaplıklarının bu kurulum sayfasının Apple platformları (iOS+) sürümünde listelendiğini unutmayın.

Firebase ürünü Kütüphane referansları
( firebaseCpp.dependencies
build.gradle dosyası için)
Kütüphane referansları
( firebase_libs
CMakeLists.txt dosyası için)
AdMob admob firebase_admob
(gerekli) firebase_analytics
(gerekli) firebase_app
Analitik analytics firebase_analytics
(gerekli) firebase_app
Uygulama Kontrolü appCheck firebase_app_check
(gerekli) firebase_app
Kimlik doğrulama auth firebase_auth
(gerekli) firebase_app
Bulut Firestore firestore firebase_firestore
(gerekli) firebase_auth
(gerekli) firebase_app
Bulut İşlevleri functions firebase_functions
(gerekli) firebase_app
Bulut Mesajlaşma messaging firebase_messaging
(önerilir) firebase_analytics
(gerekli) firebase_app
Bulut depolama storage firebase_storage
(gerekli) firebase_app
Dinamik Bağlantılar dynamicLinks firebase_dynamic_links
(önerilir) firebase_analytics
(gerekli) firebase_app
Gerçek Zamanlı Veritabanı database firebase_database
(gerekli) firebase_app
Uzaktan Yapılandırma remoteConfig firebase_remote_config
(önerilir) firebase_analytics
(gerekli) firebase_app

Mobil kurulum için ek bilgiler

NDK kilitlenme raporlarını alın

Firebase Crashlytics, Android yerel kitaplıklarını kullanan uygulamalar için kilitlenme raporlamasını destekler. Daha fazla bilgi edinmek için bkz. Android NDK kilitlenme raporlarını alma .

Özel yapım sistemler

Firebase google-services.json projenize ekleyebileceğiniz .xml kaynaklarına dönüştürmek için generate_xml_from_google_services_json.py komut dosyasını sağlar. Bu komut dosyası, Google Play hizmetleri Gradle eklentisinin Android uygulamaları oluştururken gerçekleştirdiği dönüşümün aynısını uygular.

Gradle kullanarak derleme yapmıyorsanız (örneğin, ndk-build, makefiles, Visual Studio vb. kullanıyorsanız), Android String Resources'ın oluşturulmasını otomatikleştirmek için bu betiği kullanabilirsiniz.

ProGuard

Birçok Android derleme sistemi, uygulama boyutlarını küçültmek ve Java kaynak kodunu korumak amacıyla Yayın modundaki derlemeler için ProGuard'ı kullanır.

ProGuard kullanıyorsanız, ProGuard yapılandırmanızda kullandığınız Firebase C++ kitaplıklarına karşılık gelen dosyaları libs/android/*.pro dosyasına eklemeniz gerekir.

Örneğin Gradle'da Google Analytics kullanıyorsanız build.gradle dosyanız şöyle görünecektir:

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

Google Play hizmetleri gereksinimi

Çoğu Firebase C++ kitaplığı, Google Play hizmetlerinin istemcinin Android cihazında olmasını gerektirir. Bir Firebase C++ kitaplığı, başlatma sırasında kInitResultFailedMissingDependency değerini döndürürse, bu, Google Play hizmetlerinin istemci cihazda mevcut olmadığı anlamına gelir (yani güncellenmesi, yeniden etkinleştirilmesi, izinlerin düzeltilmesi vb. gerektiği anlamına gelir). Firebase kütüphanesi, istemci cihazdaki durum düzeltilene kadar kullanılamaz.

google_play_services/availability.h adresindeki işlevleri kullanarak Google Play hizmetlerinin istemci cihazda neden kullanılamadığını öğrenebilir (ve düzeltmeye çalışabilirsiniz).

Aşağıdaki tabloda, desteklenen her Firebase ürünü için istemci cihazda Google Play hizmetlerinin gerekli olup olmadığı listelenmektedir.

Firebase C++ Kitaplığı İstemci cihazında Google Play hizmetleri gerekli mi?
AdMob Gerekli değil (genellikle)
Analitik Gerekli değil
Kimlik doğrulama Gerekli
Bulut Firestore Gerekli
Bulut İşlevleri Gerekli
Bulut Mesajlaşma Gerekli
Bulut depolama Gerekli
Dinamik Bağlantılar Gerekli
Gerçek Zamanlı Veritabanı Gerekli
Uzaktan Yapılandırma Gerekli

AdMob ve Google Play hizmetleri

Android için Google Mobile Ads SDK'sının çoğu sürümü, istemci cihazda Google Play hizmetleri olmadan düzgün şekilde çalışabilir. Ancak yukarıda listelenen standart com.google.firebase: com.google.firebase:firebase-ads com.google.android.gms:play-services-ads-lite bağımlılığını kullanıyorsanız Google Play hizmetleri gereklidir .

AdMob'un başlatılması yalnızca aşağıdakilerin her ikisi de doğru olduğunda kInitResultFailedMissingDependency değerini döndürür:

  • İstemci cihazında Google Play hizmetleri kullanılamıyor.
  • com.google.android.gms:play-services-ads-lite kullanıyorsunuz.

Masaüstü iş akışı ayarlama ( beta )

Bir oyun oluşturduğunuzda, oyununuzu önce masaüstü platformlarda test etmek, ardından geliştirme aşamasında mobil cihazlara dağıtmak ve test etmek genellikle çok daha kolaydır. Bu iş akışını desteklemek için Windows, macOS, Linux üzerinde ve C++ düzenleyicisinden çalışabilen Firebase C++ SDK'larının bir alt kümesini sağlıyoruz.

  1. Masaüstü iş akışları için aşağıdakileri tamamlamanız gerekir:

    1. C++ projenizi CMake için yapılandırın.
    2. Firebase projesi oluşturma
    3. Uygulamanızı (iOS veya Android) Firebase'e kaydedin
    4. Mobil platform Firebase yapılandırma dosyası ekleyin
  2. Firebase yapılandırma dosyasının masaüstü sürümünü oluşturun:

    • Android google-services.json dosyasını eklediyseniz — Uygulamanızı çalıştırdığınızda Firebase bu mobil dosyayı bulur ve ardından otomatik olarak bir masaüstü Firebase yapılandırma dosyası ( google-services-desktop.json ) oluşturur.

    • iOS GoogleService-Info.plist dosyasını eklediyseniz — Uygulamanızı çalıştırmadan önce bu mobil dosyayı bir masaüstü Firebase yapılandırma dosyasına dönüştürmeniz gerekir. Dosyayı dönüştürmek için GoogleService-Info.plist dosyanızla aynı dizinde aşağıdaki komutu çalıştırın:

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

    Bu masaüstü yapılandırma dosyası, Firebase konsolu kurulum iş akışına girdiğiniz C++ proje kimliğini içerir. Yapılandırma dosyaları hakkında daha fazla bilgi edinmek için Firebase Projelerini Anlayın sayfasını ziyaret edin.

  3. Firebase SDK'larını C++ projenize ekleyin.

    Aşağıdaki adımlar, desteklenen herhangi bir Firebase ürününü C++ projenize nasıl ekleyeceğinize örnek teşkil etmektedir. Bu örnekte Firebase Authentication ve Firebase Realtime Database ekleme adımlarını izleyeceğiz.

    1. FIREBASE_CPP_SDK_DIR ortam değişkeninizi sıkıştırılmış Firebase C++ SDK'nın konumuna ayarlayın.

    2. Projenizin CMakeLists.txt dosyasına, kullanmak istediğiniz Firebase ürünlerine ait kitaplıklar da dahil olmak üzere aşağıdaki içeriği ekleyin. Örneğin, Firebase Authentication ve Firebase Realtime Database'i kullanmak için:

      # 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. C++ uygulamanızı çalıştırın.

Kullanılabilir kitaplıklar (masaüstü)

Firebase C++ SDK, bir dizi özellik için masaüstü iş akışı desteği içerir ve Firebase'in belirli bölümlerinin Windows, macOS ve Linux'taki bağımsız masaüstü yapılarında kullanılmasına olanak tanır.

Firebase ürünü Kitaplık referansları (CMake kullanılarak)
Uygulama Kontrolü firebase_app_check
(gerekli) firebase_app
Kimlik doğrulama firebase_auth
(gerekli) firebase_app
Bulut Firestore firebase_firestore
firebase_auth
firebase_app
Bulut İşlevleri firebase_functions
(gerekli) firebase_app
Bulut depolama firebase_storage
(gerekli) firebase_app
Gerçek Zamanlı Veritabanı firebase_database
(gerekli) firebase_app
Uzaktan Yapılandırma firebase_remote_config
(gerekli) firebase_app

Firebase, Windows, macOS ve Linux için derleme yaparken kolaylık sağlamak amacıyla kalan masaüstü kitaplıklarını saplama (işlevsiz) uygulamalar olarak sağlar. Bu nedenle, masaüstünü hedeflemek için kodu koşullu olarak derlemenize gerek yoktur.

Gerçek Zamanlı Veritabanı masaüstü

Masaüstü için Realtime Database SDK, veritabanınıza erişmek için REST'i kullanır, bu nedenle masaüstünde Query::OrderByChild() ile kullandığınız dizinleri bildirmeniz gerekir, aksi takdirde dinleyicileriniz başarısız olur.

Masaüstü kurulumu için ek bilgiler

Windows kitaplıkları

Windows için kitaplık sürümleri aşağıdakilere dayalı olarak sağlanır:

  • Platform oluşturma: 32 bit (x86) ve 64 bit (x64) modu
  • Windows çalışma zamanı ortamı: Çok iş parçacıklı / MT ve Çok iş parçacıklı DLL /MD
  • Hedef: Sürüm ve Hata Ayıklama

Aşağıdaki kitaplıkların Visual Studio 2015 ve 2017 kullanılarak test edildiğini unutmayın.

Windows'ta C++ masaüstü uygulamaları oluştururken aşağıdaki Windows SDK kitaplıklarını projenize bağlayın. Daha fazla bilgi için derleyicinizin belgelerine bakın.

Firebase C++ Kitaplığı Windows SDK kitaplığı bağımlılıkları
Uygulama Kontrolü advapi32, ws2_32, crypt32
Kimlik doğrulama advapi32, ws2_32, crypt32
Bulut Firestore advapi32, ws2_32, crypt32, rpcrt4, ole32, shell32
Bulut İşlevleri advapi32, ws2_32, crypt32, rpcrt4, ole32
Bulut depolama advapi32, ws2_32, crypt32
Gerçek Zamanlı Veritabanı advapi32, ws2_32, crypt32, iphlpapi, psapi, userenv
Uzaktan Yapılandırma advapi32, ws2_32, crypt32, rpcrt4, ole32

macOS kitaplıkları

MacOS (Darwin) için, 64 bit (x86_64) platformuna yönelik kitaplık sürümleri sağlanır. Size kolaylık sağlamak için çerçeveler de sağlanmıştır.

MacOS kitaplıklarının Xcode 13.3.1 kullanılarak test edildiğini unutmayın.

MacOS'ta C++ masaüstü uygulamaları oluştururken aşağıdakileri projenize bağlayın:

  • pthread sistem kütüphanesi
  • CoreFoundation macOS sistem çerçevesi
  • Foundation macOS sistem çerçevesi
  • Security macOS sistem çerçevesi
  • GSS macOS sistem çerçevesi
  • Kerberos macOS sistem çerçevesi
  • SystemConfiguration macOS sistem çerçevesi

Daha fazla bilgi için derleyicinizin belgelerine bakın.

Linux kütüphaneleri

Linux için, 32 bit (i386) ve 64 bit (x86_64) platformlara yönelik kitaplık sürümleri sağlanır.

Linux kitaplıklarının Ubuntu'da GCC 4.8.0, GCC 7.2.0 ve Clang 5.0 kullanılarak test edildiğini unutmayın.

Linux'ta C++ masaüstü uygulamaları oluştururken pthread sistem kitaplığını projenize bağlayın. Daha fazla bilgi için derleyicinizin belgelerine bakın. GCC 5 veya üzeri bir sürümle derleme yapıyorsanız -D_GLIBCXX_USE_CXX11_ABI=0 tanımlayın.

Sonraki adımlar