Thêm Firebase vào dự án C++ của bạn

Tăng sức mạnh cho trò chơi C++ của bạn bằng SDK Firebase C++ của chúng tôi, cung cấp giao diện C++ trên SDK Firebase.

Truy cập Firebase hoàn toàn từ mã C++ của bạn mà không cần phải viết bất kỳ mã gốc nền tảng nào. SDK Firebase cũng dịch nhiều thành ngữ dành riêng cho ngôn ngữ được Firebase sử dụng sang giao diện quen thuộc hơn với các nhà phát triển C++.

Tìm hiểu thêm thông tin về cách tăng sức mạnh cho trò chơi của bạn bằng Firebase tại trang trò chơi Firebase của chúng tôi.

Đã thêm Firebase vào dự án C++ của bạn? Đảm bảo rằng bạn đang sử dụng phiên bản mới nhất của SDK Firebase C++ .

Điều kiện tiên quyết

  • Cài đặt trình soạn thảo hoặc IDE ưa thích của bạn, chẳng hạn như Android Studio, IntelliJ hoặc VS Code.

  • Lấy SDK Android .

  • Đảm bảo rằng dự án của bạn đáp ứng các yêu cầu sau:

  • Thiết lập thiết bị vật lý hoặc sử dụng trình mô phỏng để chạy ứng dụng của bạn.

    • Trình giả lập phải sử dụng hình ảnh trình mô phỏng với Google Play.

    • Đối với một số thư viện C++, dịch vụ Google Play được yêu cầu trên thiết bị khách; xem lại danh sách trên trang này.

  • Đăng nhập vào Firebase bằng tài khoản Google của bạn.

Bước 2 : Tạo dự án Firebase

Trước khi có thể thêm Firebase vào dự án C++ của mình, bạn cần tạo dự án Firebase để kết nối với dự án C++ của mình. Truy cập Tìm hiểu dự án Firebase để tìm hiểu thêm về các dự án Firebase.

Bước 3 : Đăng ký ứng dụng của bạn với Firebase

Để sử dụng Firebase trong ứng dụng Android, bạn cần đăng ký ứng dụng với dự án Firebase của mình. Đăng ký ứng dụng của bạn thường được gọi là "thêm" ứng dụng vào dự án của bạn.

  1. Chuyển đến bảng điều khiển Firebase .

  2. Ở giữa trang tổng quan dự án, hãy nhấp vào biểu tượng Android ( ) hoặc Thêm ứng dụng để khởi chạy quy trình thiết lập.

  3. Nhập tên gói ứng dụng của bạn vào trường tên gói Android .

  4. (Tùy chọn) Nhập thông tin ứng dụng khác: Biệt hiệu ứng dụngChứng chỉ ký gỡ lỗi SHA-1 .

  5. Nhấn vào Đăng ký ứng dụng .

Bước 4 : Thêm file cấu hình Firebase

  1. Nhấp vào Tải xuống google-services.json để lấy tệp cấu hình Firebase Android của bạn.

  2. Mở dự án C++ của bạn trong IDE, sau đó thêm tệp cấu hình vào dự án của bạn:

  3. (Chỉ bản dựng Gradle) Để bật dịch vụ Firebase trong dự án C++ của bạn, hãy thêm plugin google-services vào tệp build.gradle cấp cao nhất của bạn.

    1. Thêm quy tắc để bao gồm plugin Google Services Gradle. Kiểm tra xem bạn có kho lưu trữ Maven của Google không.

        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. Áp dụng plugin Google Services Gradle:

        apply plugin: 'com.android.application'
        // Add the following line:
        apply plugin: 'com.google.gms.google-services'  // Google Services plugin
      
        android {
          // ...
        }
      
  4. Bạn đã hoàn tất việc thiết lập trong bảng điều khiển Firebase. Tiếp tục Thêm SDK Firebase C++ bên dưới.

Bước 5 : Thêm SDK Firebase C++

Các bước trong phần này là ví dụ về cách thêm các sản phẩm Firebase được hỗ trợ vào dự án Firebase C++ của bạn.

  1. Tải xuống SDK Firebase C++ , sau đó giải nén SDK ở nơi nào đó thuận tiện.

    SDK Firebase C++ không dành riêng cho nền tảng nhưng có chứa các thư viện dành riêng cho nền tảng.

  2. Trong tệp gradle.properties của dự án của bạn, hãy chỉ định vị trí của SDK đã giải nén:

    systemProp.firebase_cpp_sdk.dir=full-path-to-SDK
    
  3. Vào tệp settings.gradle của dự án của bạn, hãy thêm nội dung sau:

    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. Vào tệp Gradle mô-đun (cấp ứng dụng) của bạn (thường là app/build.gradle ), hãy thêm nội dung sau.
    Bao gồm các phần phụ thuộc thư viện cho các sản phẩm Firebase mà bạn muốn sử dụng trong ứng dụng của mình.

    Đã bật phân tích

    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
    }
    

    Phân tích chưa được bật

    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. Vào tệp CMakeLists.txt của dự án của bạn, hãy thêm nội dung sau.
    Bao gồm các thư viện dành cho sản phẩm Firebase mà bạn muốn sử dụng trong ứng dụng của mình.

    Đã bật phân tích

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

    Phân tích chưa được bật

    # 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. Đồng bộ hóa ứng dụng của bạn để đảm bảo rằng tất cả các phần phụ thuộc đều có phiên bản cần thiết.

  7. Nếu bạn đã thêm Analytics, hãy chạy ứng dụng của bạn để gửi xác minh tới Firebase rằng bạn đã tích hợp thành công Firebase. Nếu không, bạn có thể bỏ qua bước xác minh.

    Nhật ký thiết bị của bạn sẽ hiển thị xác minh Firebase rằng quá trình khởi tạo đã hoàn tất. Nếu bạn chạy ứng dụng của mình trên trình mô phỏng có quyền truy cập mạng thì bảng điều khiển Firebase sẽ thông báo cho bạn rằng kết nối ứng dụng của bạn đã hoàn tất.

Bạn đã hoàn tất! Ứng dụng C++ của bạn đã được đăng ký và định cấu hình để sử dụng các dịch vụ Firebase.

Thư viện có sẵn

Tìm hiểu thêm về thư viện C++ Firebase trong tài liệu tham khảo và trong bản phát hành SDK nguồn mở của chúng tôi trên GitHub .

Thư viện có sẵn cho Android (sử dụng CMake)

Lưu ý rằng thư viện C++ dành cho nền tảng Apple được liệt kê trên phiên bản nền tảng Apple (iOS+) của trang thiết lập này .

sản phẩm căn cứ hỏa lực Thư viện tham khảo
( firebaseCpp.dependencies
đối với tệp build.gradle )
Thư viện tham khảo
( firebase_libs
đối với tệp CMakeLists.txt )
AdMob admob firebase_admob
(bắt buộc) firebase_analytics
(bắt buộc) firebase_app
phân tích analytics firebase_analytics
(bắt buộc) firebase_app
Kiểm tra ứng dụng appCheck firebase_app_check
(bắt buộc) firebase_app
Xác thực auth firebase_auth
(bắt buộc) firebase_app
Cửa hàng đám mây firestore firebase_firestore
(bắt buộc) firebase_auth
(bắt buộc) firebase_app
Chức năng đám mây functions firebase_functions
(bắt buộc) firebase_app
Nhắn tin qua đám mây messaging firebase_messaging
(được khuyến nghị) firebase_analytics
(bắt buộc) firebase_app
Lưu trữ đám mây storage firebase_storage
(bắt buộc) firebase_app
Liên kết động dynamicLinks firebase_dynamic_links
(được khuyến nghị) firebase_analytics
(bắt buộc) firebase_app
Cơ sở dữ liệu thời gian thực database firebase_database
(bắt buộc) firebase_app
Cấu hình từ xa remoteConfig firebase_remote_config
(được khuyến nghị) firebase_analytics
(bắt buộc) firebase_app

Thông tin bổ sung cho thiết lập di động

Nhận báo cáo sự cố NDK

Firebase Crashlytics hỗ trợ báo cáo sự cố cho các ứng dụng sử dụng thư viện gốc của Android. Để tìm hiểu thêm, hãy xem Nhận báo cáo sự cố NDK của Android .

Hệ thống xây dựng tùy chỉnh

Firebase cung cấp tập lệnh generate_xml_from_google_services_json.py để chuyển đổi tài nguyên google-services.json thành .xml mà bạn có thể đưa vào dự án của mình. Tập lệnh này áp dụng cùng một chuyển đổi mà plugin Gradle của dịch vụ Google Play thực hiện khi xây dựng các ứng dụng Android.

Nếu bạn không xây dựng bằng Gradle (ví dụ: bạn sử dụng ndk-build, makefiles, Visual Studio, v.v.), bạn có thể sử dụng tập lệnh này để tự động tạo Android String Resources .

ProGuard

Nhiều hệ thống xây dựng Android sử dụng ProGuard cho các bản dựng ở chế độ Phát hành nhằm thu nhỏ kích thước ứng dụng và bảo vệ mã nguồn Java.

Nếu sử dụng ProGuard, bạn sẽ cần thêm các tệp trong libs/android/*.pro tương ứng với thư viện Firebase C++ mà bạn đang sử dụng trong cấu hình ProGuard của mình.

Ví dụ: với Gradle, nếu bạn đang sử dụng Google Analytics, tệp build.gradle của bạn sẽ trông như sau:

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

Yêu cầu về dịch vụ của Google Play

Hầu hết các thư viện Firebase C++ đều yêu cầu dịch vụ Google Play phải có trên thiết bị Android của khách hàng. Nếu thư viện Firebase C++ trả về kInitResultFailedMissingDependency khi khởi tạo, điều đó có nghĩa là dịch vụ Google Play không khả dụng trên thiết bị khách (có nghĩa là dịch vụ này cần được cập nhật, kích hoạt lại, sửa các quyền, v.v.). Không thể sử dụng thư viện Firebase cho đến khi tình trạng trên thiết bị khách được khắc phục.

Bạn có thể tìm hiểu lý do tại sao dịch vụ Google Play không khả dụng trên thiết bị khách (và thử khắc phục) bằng cách sử dụng các chức năng trong google_play_services/availability.h .

Bảng sau liệt kê xem các dịch vụ Google Play có cần thiết trên thiết bị khách cho từng sản phẩm Firebase được hỗ trợ hay không.

Thư viện Firebase C++ Cần có dịch vụ Google Play trên thiết bị khách?
AdMob Không bắt buộc (thường)
phân tích Không yêu cầu
Xác thực Yêu cầu
Cửa hàng đám mây Yêu cầu
Chức năng đám mây Yêu cầu
Nhắn tin qua đám mây Yêu cầu
Lưu trữ đám mây Yêu cầu
Liên kết động Yêu cầu
Cơ sở dữ liệu thời gian thực Yêu cầu
Cấu hình từ xa Yêu cầu

Dịch vụ AdMob và Google Play

Hầu hết các phiên bản SDK quảng cáo trên thiết bị di động của Google dành cho Android có thể hoạt động bình thường mà không cần dịch vụ Google Play trên thiết bị khách. Tuy nhiên, nếu bạn đang sử dụng phần phụ thuộc com.google.android.gms:play-services-ads-lite , thay vì phần phụ thuộc com.google.firebase:firebase-ads tiêu chuẩn được liệt kê ở trên thì bắt buộc phải có dịch vụ Google Play .

Quá trình khởi chạy AdMob sẽ chỉ trả về kInitResultFailedMissingDependency khi cả hai điều sau đều đúng:

  • Dịch vụ Google Play không khả dụng trên thiết bị khách.
  • Bạn đang sử dụng com.google.android.gms:play-services-ads-lite .

Thiết lập quy trình làm việc trên máy tính để bàn ( beta )

Khi bạn tạo trò chơi, việc thử nghiệm trò chơi của bạn trên nền tảng máy tính để bàn trước tiên thường dễ dàng hơn nhiều, sau đó triển khai và thử nghiệm trên thiết bị di động trong quá trình phát triển sau này. Để hỗ trợ quy trình làm việc này, chúng tôi cung cấp một tập hợp con SDK Firebase C++ có thể chạy trên Windows, macOS, Linux và từ bên trong trình chỉnh sửa C++.

  1. Đối với quy trình làm việc trên máy tính để bàn, bạn cần hoàn thành những việc sau:

    1. Định cấu hình dự án C++ của bạn cho CMake.
    2. Tạo dự án Firebase
    3. Đăng ký ứng dụng của bạn (iOS hoặc Android) với Firebase
    4. Thêm tệp cấu hình Firebase trên nền tảng di động
  2. Tạo phiên bản máy tính để bàn của tệp cấu hình Firebase:

    • Nếu bạn đã thêm tệp google-services.json Android — Khi bạn chạy ứng dụng của mình, Firebase sẽ định vị tệp dành cho thiết bị di động này, sau đó tự động tạo tệp cấu hình Firebase trên máy tính để bàn ( google-services-desktop.json ).

    • Nếu bạn đã thêm tệp GoogleService-Info.plist iOS - Trước khi chạy ứng dụng của mình, bạn cần chuyển đổi tệp dành cho thiết bị di động này thành tệp cấu hình Firebase trên máy tính để bàn . Để chuyển đổi tệp, hãy chạy lệnh sau từ cùng thư mục với tệp GoogleService-Info.plist của bạn:

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

    Tệp cấu hình máy tính để bàn này chứa ID dự án C++ mà bạn đã nhập trong quy trình thiết lập bảng điều khiển Firebase. Truy cập Tìm hiểu dự án Firebase để tìm hiểu thêm về tệp cấu hình.

  3. Thêm SDK Firebase vào dự án C++ của bạn.

    Các bước bên dưới là ví dụ về cách thêm bất kỳ sản phẩm Firebase nào được hỗ trợ vào dự án C++ của bạn. Trong ví dụ này, chúng tôi hướng dẫn cách thêm Xác thực Firebase và Cơ sở dữ liệu thời gian thực Firebase.

    1. Đặt biến môi trường FIREBASE_CPP_SDK_DIR của bạn thành vị trí của SDK Firebase C++ đã giải nén.

    2. Vào tệp CMakeLists.txt của dự án của bạn, hãy thêm nội dung sau, bao gồm các thư viện dành cho sản phẩm Firebase mà bạn muốn sử dụng. Ví dụ: để sử dụng Xác thực Firebase và Cơ sở dữ liệu thời gian thực 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. Chạy ứng dụng C++ của bạn.

Thư viện có sẵn (máy tính để bàn)

SDK Firebase C++ bao gồm hỗ trợ quy trình làm việc trên máy tính để bàn cho một tập hợp con các tính năng, cho phép sử dụng một số phần nhất định của Firebase trong các bản dựng máy tính để bàn độc lập trên Windows, macOS và Linux.

sản phẩm căn cứ hỏa lực Tài liệu tham khảo thư viện (sử dụng CMake)
Kiểm tra ứng dụng firebase_app_check
(bắt buộc) firebase_app
Xác thực firebase_auth
(bắt buộc) firebase_app
Cửa hàng đám mây firebase_firestore
firebase_auth
firebase_app
Chức năng đám mây firebase_functions
(bắt buộc) firebase_app
Lưu trữ đám mây firebase_storage
(bắt buộc) firebase_app
Cơ sở dữ liệu thời gian thực firebase_database
(bắt buộc) firebase_app
Cấu hình từ xa firebase_remote_config
(bắt buộc) firebase_app

Firebase cung cấp các thư viện máy tính để bàn còn lại dưới dạng triển khai sơ khai (không có chức năng) để thuận tiện khi xây dựng cho Windows, macOS và Linux. Do đó, bạn không cần phải biên dịch mã có điều kiện để nhắm mục tiêu vào máy tính để bàn.

Máy tính để bàn cơ sở dữ liệu thời gian thực

SDK cơ sở dữ liệu thời gian thực dành cho máy tính để bàn sử dụng REST để truy cập cơ sở dữ liệu của bạn, vì vậy bạn phải khai báo các chỉ mục mà bạn sử dụng với Query::OrderByChild() trên máy tính để bàn, nếu không trình nghe của bạn sẽ không thành công.

Thông tin bổ sung về thiết lập máy tính để bàn

Thư viện Windows

Đối với Windows, các phiên bản thư viện được cung cấp dựa trên những điều sau:

  • Nền tảng xây dựng: chế độ 32 bit (x86) so với 64 bit (x64)
  • Môi trường thời gian chạy Windows: Multithreaded/MT vs Multithreaded DLL/MD
  • Mục tiêu: Phát hành và gỡ lỗi

Lưu ý rằng các thư viện sau đã được thử nghiệm bằng Visual Studio 2015 và 2017.

Khi xây dựng ứng dụng máy tính để bàn C++ trên Windows, hãy liên kết các thư viện SDK Windows sau với dự án của bạn. Tham khảo tài liệu trình biên dịch của bạn để biết thêm thông tin.

Thư viện Firebase C++ Phụ thuộc thư viện Windows SDK
Kiểm tra ứng dụng advapi32, ws2_32, crypt32
Xác thực advapi32, ws2_32, crypt32
Cửa hàng đám mây advapi32, ws2_32, crypt32, rpcrt4, ole32, shell32
Chức năng đám mây advapi32, ws2_32, crypt32, rpcrt4, ole32
Lưu trữ đám mây advapi32, ws2_32, crypt32
Cơ sở dữ liệu thời gian thực advapi32, ws2_32, crypt32, iphlpapi, psapi, userenv
Cấu hình từ xa advapi32, ws2_32, crypt32, rpcrt4, ole32

thư viện macOS

Đối với macOS (Darwin), các phiên bản thư viện được cung cấp cho nền tảng 64-bit (x86_64). Các khung cũng được cung cấp để thuận tiện cho bạn.

Lưu ý rằng các thư viện macOS đã được thử nghiệm bằng Xcode 13.3.1.

Khi xây dựng ứng dụng máy tính để bàn C++ trên macOS, hãy liên kết phần sau với dự án của bạn:

  • thư viện hệ thống pthread
  • Khung hệ thống macOS CoreFoundation
  • Foundation hệ thống macOS nền tảng
  • Khung hệ thống macOS Security
  • Khung hệ thống macOS GSS
  • Khung hệ thống Kerberos macOS
  • Khung hệ thống macOS SystemConfiguration

Tham khảo tài liệu trình biên dịch của bạn để biết thêm thông tin.

Thư viện Linux

Đối với Linux, các phiên bản thư viện được cung cấp cho nền tảng 32 bit (i386) và 64 bit (x86_64).

Lưu ý rằng các thư viện Linux đã được thử nghiệm bằng GCC 4.8.0, GCC 7.2.0 và Clang 5.0 trên Ubuntu.

Khi xây dựng ứng dụng máy tính để bàn C++ trên Linux, hãy liên kết thư viện hệ thống pthread với dự án của bạn. Tham khảo tài liệu trình biên dịch của bạn để biết thêm thông tin. Nếu bạn đang xây dựng bằng GCC 5 trở lên, hãy xác định -D_GLIBCXX_USE_CXX11_ABI=0 .

Bước tiếp theo