Menambahkan Firebase ke project C++

Tingkatkan performa game C++ Anda dengan Firebase C++ SDK kami yang menyediakan antarmuka C++ pada Firebase SDK.

Dapatkan akses ke Firebase sepenuhnya dari kode C++ Anda, tanpa harus menulis kode native platform apa pun. Firebase SDK juga menerjemahkan berbagai idiom bahasa tertentu yang digunakan oleh Firebase agar menjadi antarmuka yang lebih dikenal oleh developer C++.

Cari tahu informasi lebih lanjut tentang cara meningkatkan performa game Anda dengan Firebase di halaman game Firebase kami.

Sudah menambahkan Firebase ke project C++ Anda? Pastikan Anda menggunakan versi terbaru Firebase C++ SDK.


Prasyarat

  • Instal editor atau IDE pilihan Anda, seperti Android Studio, IntelliJ, atau VS Code.

  • Dapatkan Android SDK.

  • Pastikan project Anda memenuhi persyaratan berikut:

  • Siapkan perangkat fisik atau gunakan emulator untuk menjalankan aplikasi Anda.

    • Emulator harus menggunakan image emulator dengan Google Play.

    • Untuk beberapa library C++, layanan Google Play diperlukan di perangkat klien. Lihat daftarnya di halaman ini.

  • Login ke Firebase menggunakan akun Google Anda.

Langkah 2: Buat project Firebase

Agar dapat menambahkan Firebase ke project C++, Anda perlu membuat project Firebase untuk terhubung ke project C++. Buka bagian Memahami Project Firebase untuk mempelajari project Firebase lebih lanjut.

Langkah 3: Daftarkan aplikasi Anda ke Firebase

Untuk menggunakan Firebase di aplikasi Android, Anda perlu mendaftarkan aplikasi ke project Firebase. Mendaftarkan aplikasi sering kali disebut sebagai "menambahkan" aplikasi ke project Anda.

  1. Buka Firebase console.

  2. Di bagian tengah halaman ringkasan project, klik ikon Android () atau Add app untuk meluncurkan alur kerja penyiapan.

  3. Masukkan nama paket aplikasi Anda di kolom Android package name.

  4. (Opsional) Masukkan informasi aplikasi yang lain: App nickname dan Debug signing certificate SHA-1.

  5. Klik Register app.

Langkah 4: Tambahkan file konfigurasi Firebase

  1. Klik Download google-services.json untuk mendapatkan file konfigurasi Android Firebase Anda.

  2. Buka project C++ Anda di IDE, lalu tambahkan file konfigurasi ke project Anda:

    • Build Gradle — Tambahkan file konfigurasi ke direktori yang sama dengan file build.gradle level teratas.

    • Sistem build lainnya — Pelajari Sistem build kustom di bawah untuk membuat Resource String Android.

  3. (Khusus build Gradle) Untuk mengaktifkan layanan Firebase di project C++ Anda, tambahkan plugin google-services ke file build.gradle level teratas.

    1. Tambahkan aturan untuk menyertakan plugin Gradle Layanan Google. Pastikan Anda juga memiliki repositori Maven 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.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. Terapkan plugin Gradle Layanan Google:

        apply plugin: 'com.android.application'
        // Add the following line:
        apply plugin: 'com.google.gms.google-services'  // Google Services plugin
      
        android {
          // ...
        }
      
  4. Anda sudah menyelesaikan tugas penyiapan di Firebase console. Lanjutkan ke Menambahkan Firebase C++ SDK di bawah ini.

Langkah 5: Tambahkan Firebase C++ SDK

Langkah-langkah di bagian ini adalah contoh cara menambahkan produk Firebase yang didukung ke project Firebase C++ Anda.

  1. Download Firebase C++ SDK, lalu ekstrak SDK ke tempat yang mudah diakses.

    Firebase C++ SDK tidak bersifat spesifik per platform, tetapi memuat library yang spesifik per platform.

  2. Pada file gradle.properties project Anda, tentukan lokasi SDK yang telah diekstrak:

    systemProp.firebase_cpp_sdk.dir=full-path-to-SDK
  3. Pada file settings.gradle project Anda, tambahkan konten berikut:

    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. Pada file Gradle modul (level aplikasi) (biasanya app/build.gradle), tambahkan konten berikut.
    Sertakan dependensi library untuk produk Firebase yang ingin digunakan di aplikasi Anda.

    Analytics diaktifkan

    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 tidak diaktifkan

    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. Tambahkan konten berikut ke file CMakeLists.txt project Anda.
    Sertakan library untuk produk Firebase yang ingin digunakan di aplikasi Anda.

    Analytics diaktifkan

    # 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 tidak diaktifkan

    # 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. Sinkronkan aplikasi Anda untuk memastikan bahwa semua dependensi memiliki versi yang diperlukan.

  7. Jika Anda menambahkan Analytics, jalankan aplikasi Anda untuk mengirim verifikasi ke Firebase bahwa Anda telah berhasil mengintegrasikan Firebase. Jika tidak, Anda dapat mengabaikan langkah verifikasi.

    Log perangkat Anda akan menampilkan verifikasi Firebase bahwa inisialisasi telah selesai. Jika menjalankan aplikasi pada emulator yang memiliki akses jaringan, Firebase console akan memberi tahu bahwa koneksi aplikasi Anda telah selesai.

Anda sudah siap! Aplikasi C++ Anda sudah terdaftar dan dikonfigurasikan untuk menggunakan layanan Firebase.

Library yang tersedia

Pelajari library C++ Firebase lebih lanjut di dokumentasi referensi dan dalam rilis SDK open source kami di GitHub.

Library yang tersedia untuk Android (menggunakan CMake)

Perlu diperhatikan bahwa library C++ untuk platform Apple tercantum di versi platform Apple (iOS+) di halaman penyiapan ini.

Produk Firebase Referensi library
(firebaseCpp.dependencies
untuk file build.gradle)
Referensi library
(firebase_libs
untuk file CMakeLists.txt)
AdMob admob firebase_admob
(wajib ada) firebase_analytics
(wajib ada) firebase_app
Analytics analytics firebase_analytics
(wajib ada) firebase_app
App Check appCheck firebase_app_check
(wajib ada) firebase_app
Authentication auth firebase_auth
(wajib ada) firebase_app
Cloud Firestore firestore firebase_firestore
(wajib ada) firebase_auth
(wajib ada) firebase_app
Cloud Functions functions firebase_functions
(wajib ada) firebase_app
Cloud Messaging messaging firebase_messaging
(direkomendasikan) firebase_analytics
(wajib ada) firebase_app
Cloud Storage storage firebase_storage
(wajib ada) firebase_app
Dynamic Links dynamicLinks firebase_dynamic_links
(direkomendasikan) firebase_analytics
(wajib ada) firebase_app
Realtime Database database firebase_database
(wajib ada) firebase_app
Remote Config remoteConfig firebase_remote_config
(direkomendasikan) firebase_analytics
(wajib ada) firebase_app

Informasi tambahan untuk penyiapan seluler

Mendapatkan laporan error NDK

Firebase Crashlytics mendukung pelaporan error untuk aplikasi yang menggunakan library native Android. Untuk mempelajari lebih lanjut, lihat Mendapatkan laporan error Android NDK.

Sistem build kustom

Firebase menyediakan skrip generate_xml_from_google_services_json.py untuk mengonversi google-services.json menjadi resource .xml yang dapat Anda sertakan dalam project. Skrip ini menerapkan transformasi yang sama dengan yang dilakukan oleh plugin Gradle layanan Google Play saat mem-build aplikasi Android.

Jika Anda tidak mem-build project menggunakan Gradle (misalnya, Anda menggunakan ndk-build, makefile, Visual Studio, dll.), Anda dapat menggunakan skrip ini untuk mengotomatiskan pembuatan Resource String Android.

ProGuard

Berbagai sistem build Android menggunakan ProGuard untuk build dalam mode Rilis untuk mengurangi ukuran aplikasi dan melindungi kode sumber Java.

Jika menggunakan ProGuard, Anda harus menambahkan file dalam libs/android/*.pro yang sesuai dengan library Firebase C++ yang Anda gunakan dalam konfigurasi ProGuard.

Misalnya, dengan Gradle, jika Anda menggunakan Google Analytics, file build.gradle Anda akan terlihat seperti:

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

Persyaratan layanan Google Play

Sebagian besar library Firebase C++ mengharuskan layanan Google Play berada di perangkat Android klien. Jika library Firebase C++ menampilkan kInitResultFailedMissingDependency pada saat inisialisasi, berarti layanan Google Play tidak tersedia di perangkat klien (artinya perlu diupdate, diaktifkan kembali, perlu perbaikan izin, dll.). Library Firebase tidak dapat digunakan jika situasi di perangkat klien belum diperbaiki.

Anda dapat mencari tahu mengapa layanan Google Play tidak tersedia di perangkat klien (dan mencoba memperbaikinya) dengan menggunakan fungsi di google_play_services/availability.h.

Tabel berikut mencantumkan apakah layanan Google Play diperlukan di perangkat klien untuk setiap produk Firebase yang didukung.

Library Firebase C++ Apakah layanan Google Play diperlukan di perangkat klien?
AdMob Tidak diperlukan (biasanya)
Analytics Tidak diperlukan
Authentication Wajib
Cloud Firestore Wajib
Cloud Functions Wajib
Cloud Messaging Wajib
Cloud Storage Wajib
Dynamic Links Wajib
Realtime Database Wajib
Remote Config Wajib

AdMob dan layanan Google Play

Sebagian besar versi Google Mobile Ads SDK untuk Android dapat berfungsi dengan baik tanpa layanan Google Play di perangkat klien. Namun, jika Anda menggunakan dependensi com.google.android.gms:play-services-ads-lite, bukan dependensi standar com.google.firebase:firebase-ads yang tercantum di atas, layanan Google Play diperlukan.

Inisialisasi AdMob hanya akan menampilkan kInitResultFailedMissingDependency jika kedua hal berikut berlaku:

  • Layanan Google Play tidak tersedia di perangkat klien.
  • Anda menggunakan com.google.android.gms:play-services-ads-lite.

Menyiapkan alur kerja desktop (beta)

Saat Anda membuat game, pengujian game sering kali jauh lebih mudah dilakukan di platform desktop terlebih dahulu, baru kemudian di-deploy dan diuji di perangkat seluler selama proses pengembangan. Untuk mendukung alur kerja ini, kami menyediakan subset Firebase C++ SDK yang dapat dijalankan di Windows, macOS, Linux, dan dari dalam editor C++.

  1. Untuk alur kerja desktop, Anda perlu menyelesaikan langkah berikut:

    1. Mengonfigurasi project C++ Anda untuk CMake
    2. Membuat project Firebase
    3. Mendaftarkan aplikasi Anda (iOS atau Android) ke Firebase
    4. Menambahkan file konfigurasi Firebase platform seluler
  2. Buat versi desktop untuk file konfigurasi Firebase:

    • Jika Anda menambahkan file google-services.json Android - Saat menjalankan aplikasi, Firebase akan mencari file seluler ini, lalu otomatis membuat file konfigurasi Firebase desktop (google-services-desktop.json).

    • Jika Anda menambahkan file GoogleService-Info.plist iOS — Sebelum menjalankan aplikasi, Anda harus mengonversi file seluler ini menjadi file konfigurasi Firebase desktop. Untuk mengonversi file tersebut, jalankan perintah berikut dari direktori yang sama dengan file GoogleService-Info.plist Anda:

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

    File konfigurasi desktop ini berisi project ID C++ yang Anda masukkan dalam alur kerja penyiapan Firebase console. Buka bagian Memahami Project Firebase untuk mempelajari file konfigurasi lebih lanjut.

  3. Tambahkan Firebase SDK ke project C++ Anda.

    Langkah-langkah di bawah ini berfungsi sebagai contoh cara menambahkan produk Firebase yang didukung ke project C++ Anda. Dalam contoh ini, kita akan mempelajari cara menambahkan Firebase Authentication dan Firebase Realtime Database.

    1. Tetapkan variabel lingkungan FIREBASE_CPP_SDK_DIR ke lokasi Firebase C++ SDK yang telah diekstrak.

    2. Pada file CMakeLists.txt project Anda, tambahkan konten berikut, termasuk library untuk produk Firebase yang ingin Anda gunakan. Misalnya, untuk menggunakan Firebase Authentication dan Firebase Realtime Database:

      # 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. Jalankan aplikasi C++ Anda.

Library yang tersedia (desktop)

Firebase C++ SDK menyertakan dukungan alur kerja desktop untuk subset fitur, yang memungkinkan bagian tertentu dari Firebase digunakan dalam build desktop mandiri di Windows, macOS, dan Linux.

Produk Firebase Referensi library (menggunakan CMake)
App Check firebase_app_check
(wajib ada) firebase_app
Authentication firebase_auth
(wajib ada) firebase_app
Cloud Firestore firebase_firestore
firebase_auth
firebase_app
Cloud Functions firebase_functions
(wajib ada) firebase_app
Cloud Storage firebase_storage
(wajib ada) firebase_app
Realtime Database firebase_database
(wajib ada) firebase_app
Remote Config firebase_remote_config
(wajib ada) firebase_app

Firebase menyediakan library desktop lainnya sebagai implementasi stub (nonfungsional) demi kemudahan saat mem-build aplikasi untuk Windows, macOS, dan Linux. Oleh karena itu, Anda tidak perlu mengompilasi kode secara bersyarat saat menargetkan desktop.

Realtime Database di desktop

Realtime Database SDK untuk desktop menggunakan REST untuk mengakses database, sehingga Anda harus mendeklarasikan indeks yang digunakan dengan Query::OrderByChild() di desktop. Jika tidak, pemroses akan gagal.

Informasi tambahan untuk penyiapan desktop

Library Windows

Untuk Windows, versi library disediakan berdasarkan:

  • Platform build: mode 32-bit (x86) vs 64-bit (x64)
  • Lingkungan runtime Windows: Multithreaded/MT vs Multithreaded DLL/MD
  • Target: Rilis vs Debug

Perlu diperhatikan bahwa library berikut diuji menggunakan Visual Studio 2015 dan 2017.

Saat mem-build aplikasi desktop C++ di Windows, tautkan library Windows SDK berikut ke project Anda. Baca dokumentasi compiler untuk informasi lebih lanjut.

Library Firebase C++ Dependensi library Windows SDK
App Check advapi32, ws2_32, crypt32
Authentication 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

Library macOS

Untuk macOS (Darwin), versi library disediakan untuk platform 64-bit (x86_64). Framework juga disediakan demi kemudahan Anda.

Perlu diperhatikan bahwa library macOS telah diuji menggunakan Xcode 13.3.1.

Saat mem-build aplikasi desktop C++ di macOS, tautkan hal-hal berikut ke project Anda:

  • Library sistem pthread
  • Framework sistem macOS CoreFoundation
  • Framework sistem macOS Foundation
  • Framework sistem macOS Security
  • Framework sistem macOS GSS
  • Framework sistem macOS Kerberos
  • Framework sistem macOS SystemConfiguration

Baca dokumentasi compiler untuk mengetahui informasi lebih lanjut.

Library Linux

Untuk Linux, versi library disediakan untuk platform 32-bit (i386) dan 64-bit (x86_64).

Perlu diperhatikan bahwa library Linux diuji menggunakan GCC 4.8.0, GCC 7.2.0, dan Clang 5.0 di Ubuntu.

Saat mem-build aplikasi desktop C++ di Linux, tautkan library sistem pthread ke project Anda. Baca dokumentasi compiler untuk mengetahui informasi lebih lanjut. Jika Anda mem-build dengan GCC 5 atau yang lebih baru, tentukan -D_GLIBCXX_USE_CXX11_ABI=0.

Langkah berikutnya