Thêm Firebase vào dự án C++

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

Truy cập hoàn toàn vào Firebase từ mã C++ mà không phải viết bất kỳ mã gốc nền tảng nào. Firebase SDK cũng chuyển nhiều thành ngữ dành riêng cho từng ngôn ngữ mà Firebase sử dụng thành một 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 thiết lập trò chơi của bạn bằng Firebase tại trang trò chơi trong Firebase của chúng tôi.

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

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

  • Cài đặt trình chỉnh sửa hoặc IDE mà bạn muốn, chẳng hạn như Android Studio, IntelliJ hoặc VS Code.

  • Lấy SDK Android.

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

  • Thiết lập một thiết bị thực hoặc dùng trình mô phỏng để chạy ứng dụng.

    • Trình mô phỏng 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++, thiết bị khách phải có Dịch vụ Google Play. Hãy 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++, bạn cần tạo dự án Firebase để kết nối với dự án C++. Hãy xem bài viết Tìm hiểu về các 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 của mình với dự án Firebase. Việc đăng ký ứng dụng thường được gọi là "thêm" ứng dụng vào dự án.

  1. Truy cập vào bảng điều khiển của Firebase.

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

  3. Nhập tên gói của ứng dụng vào trường Android package name (Tên gói Android).

  4. (Không bắt buộc) Nhập các thông tin khác về ứng dụng: Biệt hiệu ứng dụngChứng chỉ ký gỡ lỗi SHA-1.

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

Bước 4: Thêm tệp cấu hình Firebase

  1. Nhấp vào Download google-services.json xuống để lấy tệp cấu hình Android Firebase.

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

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

    1. Thêm các quy tắc để đưa trình bổ trợ Gradle cho các dịch vụ của Google vào. Hãy kiểm tra để đảm bảo rằng bạn cũng có kho lưu trữ Maven của 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. Áp dụng trình bổ trợ Gradle cho Dịch vụ của Google:

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

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

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

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

    SDK C++ của Firebase 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, 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, 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. Trong tệp Gradle của mô-đun (cấp ứng dụng) (thường là app/build.gradle), hãy thêm nội dung sau.
    Thêm các phần phụ thuộc của 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 Analytics

    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
    }
    

    Chưa bật Analytics

    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, hãy thêm nội dung sau.
    Thêm 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 Analytics

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

    Chưa bật Analytics

    # 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ộ hoá ứ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 thông tin xác minh đến 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ị quy trình xác minh Firebase rằng quá trình khởi chạy đã hoàn tất. Nếu bạn chạy ứng dụng trên một trình mô phỏng có quyền truy cập mạng, bảng điều khiển của Firebase sẽ thông báo cho bạn rằng ứng dụng của bạn đã kết nối xong.

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ụ của Firebase.

Thư viện có sẵn

Tìm hiểu thêm về thư viện Firebase C++ 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.

Các thư viện hiện có cho Android (sử dụng CMake)

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

Sản phẩm của Firebase Tài liệu tham khảo về thư viện
(firebaseCpp.dependencies
cho tệp build.gradle)
Tài liệu tham khảo về thư viện
(firebase_libs
cho tệp CMakeLists.txt)
AdMob admob firebase_admob
(bắt buộc) firebase_analytics
(bắt buộc) firebase_app
Số liệu 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
Cloud Firestore 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
Giải pháp gửi thông báo qua đám mây messaging firebase_messaging
(nên có) firebase_analytics
(bắt buộc) firebase_app
Bộ nhớ trên đám mây storage firebase_storage
(bắt buộc) firebase_app
Đường liên kết động dynamicLinks firebase_dynamic_links
(nên có) firebase_analytics
(bắt buộc) firebase_app
Cơ sở dữ liệu theo thời gian thực database firebase_database
(bắt buộc) firebase_app
Cấu hình từ xa remoteConfig firebase_remote_config
(nên có) firebase_analytics
(bắt buộc) firebase_app

Thông tin bổ sung khi thiết lập thiết bị 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 Android. Để tìm hiểu thêm, hãy xem phần Nhận báo cáo sự cố về Android NDK.

Hệ thống xây dựng tuỳ chỉnh

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

Nếu không tạo bản dựng bằng Gradle (ví dụ: bạn dùng ndk-build, makefile, Visual Studio v.v.), bạn có thể dùng tập lệnh này để tự động tạo Tài nguyên chuỗi Android.

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 để 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 C++ của Firebase mà bạn đang sử dụng trong cấu hình ProGuard.

Ví dụ: với Gradle, nếu bạn đang sử dụng Google Analytics, tệp build.gradle của bạn sẽ có dạ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 đối với Dịch vụ Google Play

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

Bạn có thể tìm hiểu lý do Dịch vụ Google Play không hoạt động trên thiết bị khách (và cố gắng khắc phục vấn đề này) bằng cách sử dụng các hàm trong google_play_services/availability.h.

Bảng sau đây liệt kê những sản phẩm Firebase được hỗ trợ có bắt buộc phải sử dụng Dịch vụ Google Play trên thiết bị khách hay không.

Thư viện C++ của Firebase Có cần dịch vụ Google Play trên thiết bị khách không?
AdMob Không bắt buộc (thường)
Analytics Không yêu cầu
Xác thực Bắt buộc
Cloud Firestore Bắt buộc
Cloud Functions Bắt buộc
Gửi thông báo qua đám mây Bắt buộc
Cloud Storage Bắt buộc
Đường liên kết động Bắt buộc
Cơ sở dữ liệu theo thời gian thực Bắt buộc
Cấu hình từ xa Bắt buộc

AdMob và các dịch vụ của Google Play

Hầu hết phiên bản SDK Quảng cáo của Google trên thiết bị di động dành cho Android đều 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 đ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 chuẩn nêu trên, bạn cần có Dịch vụ Google Play.

Khởi chạy AdMob sẽ chỉ trả về kInitResultFailedMissingDependency khi cả hai điều kiện sau đây đều đúng:

  • Dịch vụ Google Play không hoạt động trên thiết bị khách.
  • Bạn đang 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 (thử nghiệm)

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

    1. Định cấu hình dự án C++ 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 nền tảng di động
  2. Tạo phiên bản dành cho máy tính của tệp cấu hình Firebase:

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

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

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

    Tệp cấu hình máy tính này chứa mã dự án C++ mà bạn đã nhập vào quy trình thiết lập bảng điều khiển của Firebase. Hãy xem bài viết Tìm hiểu về 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ác bước dưới đây là ví dụ về cách thêm bất kỳ sản phẩm Firebase được hỗ trợ nào vào dự án C++ của bạn. Trong ví dụ này, chúng tôi sẽ hướng dẫn bạn cách thêm tính năng Xác thực Firebase và Cơ sở dữ liệu theo thời gian thực của Firebase.

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

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

Thư viện hiện có (máy tính)

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

Sản phẩm của Firebase Tài liệu tham khảo về 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
Cloud Firestore firebase_firestore
firebase_auth
firebase_app
Chức năng đám mây firebase_functions
(bắt buộc) firebase_app
Bộ nhớ trên đám mây firebase_storage
(bắt buộc) firebase_app
Cơ sở dữ liệu theo 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 còn lại dưới dạng các phương thức triển khai giả lập (không hoạt động) để thuận tiện khi xây dựng ứng dụng cho Windows, macOS và Linux. Do đó, bạn không cần biên dịch có điều kiện mã để nhắm mục tiêu máy tính.

Cơ sở dữ liệu theo thời gian thực trên máy tính

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

Thông tin bổ sung khi thiết lập máy tính

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 nội dung 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: Đa luồng / MT so với DLL /MD đa luồng
  • Mục tiêu: Phát hành so với 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 C++ dành cho máy tính trên Windows, hãy liên kết các thư viện SDK Windows sau đây với dự án của bạn. Hãy tham khảo tài liệu về trình biên dịch để biết thêm thông tin.

Thư viện C++ của Firebase Các phần phụ thuộc của thư viện SDK Windows
Kiểm tra ứng dụng advapi32, ws2_32, crypt32
Xác thực 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
Cơ sở dữ liệu theo 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). Chúng tôi cũng cung cấp các khung chương trình để thuận tiện cho bạn.

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

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

  • Thư viện hệ thống pthread
  • CoreFoundation Khung hệ thống của macOS
  • Foundation Khung hệ thống của macOS
  • Security Khung hệ thống của macOS
  • GSS Khung hệ thống của macOS
  • Kerberos Khung hệ thống của macOS
  • SystemConfiguration Khung hệ thống của macOS

Hãy tham khảo tài liệu về trình biên dịch để 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 các nền tảng 32 bit (i386) và 64 bit (x86_64).

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

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

Các bước tiếp theo