Firebase'i C++ projenize ekleyin

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

Platformda yerel kod yazmak zorunda kalmadan Firebase'e tamamen C++ kodunuzdan erişin. Firebase SDK'sı ayrıca Firebase tarafından kullanılan dile özgü birçok deyimi, C++ geliştiricilerine daha aşina olan bir arayüze dönüştürür.

Firebase ile oyunlarınızı güçlendirme hakkında daha fazla bilgi için Firebase oyunları sayfamızı inceleyin.

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

Ön koşullar

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

  • Android SDK'sını edinin.

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

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

    • Emülatörler, Google Play'de bir emülatör görüntüsü kullanmalıdır.

    • Bazı C++ kitaplıkları için istemci cihazında 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 eklemeden önce, C++ projenize bağlanacak bir Firebase projesi oluşturmanız gerekir. Firebase projeleri hakkında daha fazla bilgi edinmek için Firebase Projelerini Anlama 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ı kaydetme işlemine genellikle uygulamanızı projenize "ekleme" denir.

  1. Firebase konsoluna gidin.

  2. Kurulum iş akışını başlatmak için projeye genel bakış sayfasının ortasında Android simgesini () veya Uygulama ekle'yi tıklayın.

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

  4. (İsteğe bağlı) Diğer uygulama bilgilerini girin: Uygulama takma adı ve SHA-1 imza sertifikası hatalarını ayıkla.

  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ı almak için Google-services.json'u indir'i tıklayın.

  2. C++ projenizi 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 Hizmetleri Gradle eklentisini içerecek kurallar ekleyin. Google'ın Maven deposunun da bulunduğundan 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.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. 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 görevleri ayarlama işlemini tamamladınız. Aşağıdaki Firebase C++ SDK'ları ekleme bölümüne geçin.

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, ardından SDK'yı uygun bir yerde açın.

    Firebase C++ SDK'sı platforma özel değildir ancak platforma özel 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ü (uygulama düzeyinde) Gradle dosyanıza (genellikle app/build.gradle) aşağıdaki içeriği ekleyin.
    Uygulamanızda kullanmak istediğiniz Firebase ürünleri için kitaplık bağımlılıklarını ekleyin.

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

    Analytics etkin değil

    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ünlerinin kitaplıklarını ekleyin.

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

    Analytics etkin değil

    # 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ıları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ğrulama göndermek için uygulamanızı çalıştırın. Aksi takdirde doğrulama adımını atlayabilirsiniz.

    Cihaz günlüklerinizde başlatmanın tamamlandığına dair Firebase doğrulaması gösterilir. 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.

Hepsi bu kadar. C++ uygulamanız Firebase hizmetlerini kullanacak şekilde kaydedilmiş ve yapılandırılmıştır.

Kullanılabilen kitaplıklar

Referans belgelerinden ve GitHub'daki açık kaynak SDK sürümümüzden C++ Firebase kitaplıkları hakkında daha fazla bilgi edinebilirsiniz.

Android için kullanılabilen kitaplıklar (CMake kullanarak)

Apple platformları için C++ kitaplıklarının bu kurulum sayfasının Apple platformları (iOS+) sürümünde listelendiğini unutmayın.

Firebase ürünü Kitaplık referansları
(firebaseCpp.dependencies
build.gradle dosya için)
Kitaplık referansları
(firebase_libs
CMakeLists.txt dosya için)
AdMob admob firebase_admob
(zorunlu) firebase_analytics
(zorunlu) firebase_app
Analizler analytics firebase_analytics
(zorunlu) firebase_app
Uygulama Kontrolü appCheck firebase_app_check
(zorunlu) firebase_app
Kimlik Doğrulama auth firebase_auth
(zorunlu) firebase_app
Cloud Firestore firestore firebase_firestore
(zorunlu) firebase_auth
(zorunlu) firebase_app
Cloud Functions functions firebase_functions
(zorunlu) firebase_app
Bulut Mesajlaşma messaging firebase_messaging
(önerilir) firebase_analytics
(zorunlu) firebase_app
Cloud Storage storage firebase_storage
(zorunlu) firebase_app
Dinamik Bağlantılar dynamicLinks firebase_dynamic_links
(önerilir) firebase_analytics
(zorunlu) firebase_app
Gerçek Zamanlı Veritabanı database firebase_database
(zorunlu) firebase_app
Remote Config remoteConfig firebase_remote_config
(önerilir) firebase_analytics
(zorunlu) firebase_app

Mobil cihaz kurulumu için ek bilgiler

NDK kilitlenme raporlarını al

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

Özel derleme sistemleri

Firebase, google-services.json projesini 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ü uygular.

Gradle kullanarak derleme yapmıyorsanız (örneğin, ndk-build, makefiles, Visual Studio vb. kullanıyorsanız) Android Dize Kaynakları oluşturma işlemini otomatikleştirmek için bu komut dosyasını kullanabilirsiniz.

ProGuard

Birçok Android derleme sistemi, uygulama boyutlarını küçültmek ve Java kaynak kodunu korumak amacıyla Sürüm modundaki derlemelerde 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 bölümüne eklemeniz gerekir.

Örneğin, Gradle'da Google Analytics kullanıyorsanız build.gradle dosyanız aşağıdaki gibi görünür:

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 şartı

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

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

Aşağıdaki tabloda, desteklenen her Firebase ürünü için bir istemci cihazda Google Play Hizmetleri'nin gerekli olup olmadığı açıklanmaktadır.

Firebase C++ Kitaplığı İstemci cihazında Google Play Hizmetleri gerekli mi?
AdMob Zorunlu değil (genellikle)
pazar bilgileri alma Zorunlu değil
Doğrulama Zorunlu
Cloud Firestore Zorunlu
Cloud Functions Zorunlu
Cloud Messaging Zorunlu
Cloud Storage Zorunlu
Dynamic Links Zorunlu
Realtime Database Zorunlu
Remote Config Zorunlu

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 bir şekilde çalışabilir. Ancak com.google.android.gms:play-services-ads-lite bağımlılığını kullanıyorsanız yukarıda listelenen standart com.google.firebase:firebase-ads bağımlılığı yerine Google Play Hizmetleri gereklidir.

AdMob başlatma yalnızca aşağıdaki koşulların her ikisi de doğru olduğunda kInitResultFailedMissingDependency değerini döndürür:

  • Google Play Hizmetleri istemci cihazda kullanılamıyor.
  • com.google.android.gms:play-services-ads-lite kullanıyorsunuz.

Masaüstü iş akışı oluşturma (beta)

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

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

    1. CMake için C++ projenizi yapılandırın.
    2. Firebase projesi oluşturma
    3. Uygulamanızı (iOS veya Android) Firebase'e kaydetme
    4. Mobil platform Firebase yapılandırma dosyası ekleme
  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ı bulup 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 Anlama 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 dair örnek teşkil eder. Bu örnekte, Firebase Authentication ve Firebase Realtime Database'i eklemeyi adım adım açıklıyoruz.

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

    2. Projenizin CMakeLists.txt dosyasına, kullanmak istediğiniz Firebase ürünlerinin kitaplıkları 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'sı bir dizi özellik için masaüstü iş akışı desteği sunar. Böylece Firebase'in belirli bölümlerinin Windows, macOS ve Linux'taki bağımsız masaüstü derlemelerinde kullanılabilmesini sağlar.

Firebase ürünü Kitaplık referansları (CMake kullanarak)
Uygulama Kontrolü firebase_app_check
(zorunlu) firebase_app
Kimlik Doğrulama firebase_auth
(zorunlu) firebase_app
Cloud Firestore firebase_firestore
firebase_auth
firebase_app
Cloud Functions firebase_functions
(zorunlu) firebase_app
Cloud Storage firebase_storage
(zorunlu) firebase_app
Gerçek Zamanlı Veritabanı firebase_database
(zorunlu) firebase_app
Remote Config firebase_remote_config
(zorunlu) firebase_app

Firebase; Windows, macOS ve Linux için geliştirme yaparken kalan masaüstü kitaplıklarını taslak (çalışmayan) uygulamalar olarak sağlar. Bu nedenle, masaüstünü hedeflemek için kodu koşullu olarak derlemeniz gerekmez.

Realtime Database masaüstü

Masaüstü için Realtime Database SDK'sı, veritabanınıza erişmek için REST kullandığından masaüstünde Query::OrderByChild() ile kullandığınız dizinleri beyan etmeniz 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 göre sağlanır:

  • Derleme platformu: 32 bit (x86) - 64 bit (x64) mod
  • Windows çalışma zamanı ortamı: Çok iş parçacıklı / MT - Ç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'da C++ masaüstü uygulamaları oluştururken aşağıdaki Windows SDK kitaplıklarını projenize bağlayın. Daha fazla bilgi için derleyici dokümanlarınıza bakın.

Firebase C++ Kitaplığı Windows SDK kitaplığı bağımlılıkları
Uygulama Kontrolü advapi32, ws2_32, crypt32
Doğrulama 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
Realtime Database advapi32, ws2_32, crypt32, iphlpapi, psapi, userenv
Remote Config advapi32, ws2_32, crypt32, rpcrt4, ole32

macOS kitaplıkları

macOS (Darwin)'de, kitaplık sürümleri 64 bit (x86_64) platforma göre sağlanır. Size kolaylık sağlamak için çerçeveler de sunulur.

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

macOS'te C++ masaüstü uygulamaları oluştururken aşağıdakini projenize bağlayın:

  • pthread sistem kitaplığı
  • 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 derleyici dokümanlarınıza bakın.

Linux kitaplıkları

Linux'ta, 32 bit (i386) ve 64 bit (x86_64) platformlar için 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 derleyici dokümanlarınıza bakın. GCC 5 veya sonraki bir sürümle derliyorsanız -D_GLIBCXX_USE_CXX11_ABI=0 öğesini tanımlayın.

Sonraki adımlar