Catch up on everthing we announced at this year's Firebase Summit. Learn more

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

Tăng sức mạnh cho các trò chơi C ++ của bạn với SDK Firebase C ++ của chúng tôi. Các SDK này cung cấp giao diện C ++ trên Firebase cho iOS và cho Android.

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 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ề powering lên trò chơi của bạn với căn cứ hỏa lực tại của chúng tôi trang trò chơi căn cứ hỏa lực .

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

Đ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 Android SDK .

  • Đả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 giả lập để chạy ứng dụng của bạn.

    • Emulators phải sử dụng một hình ảnh giả lập với Google Play.

    • Đối với một số thư viện C ++, dịch vụ Google Play là bắt buộc trên thiết bị khách; rà soát danh sách trên trang này.

  • Đăng nhập vào căn cứ hỏa lực sử dụng tài khoản Google của bạn.

Bước 2: Tạo một dự án căn cứ hỏa lực

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. Thăm Hiểu căn cứ hỏa lực dự án để tìm hiểu thêm về các dự án căn cứ hỏa lực.

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

Để 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 của bạn vào dự án của bạn.

  1. Tới các căn cứ hỏa lực console .

  2. Ở trung tâm của trang tổng quan về dự án, nhấp vào biểu tượng Android ( ) hoặc Thêm ứng dụng để khởi động công việc cài đặt.

  3. Nhập tên gói ứng dụng của bạn trong lĩnh vực tên gói Android.

  4. (Tùy chọn) Nhập thông tin ứng dụng khác: nickname AppDebug ký giấy chứng nhận SHA-1.

  5. Bấm vào Đăng ký ứng dụng.

Bước 4: Thêm các tập tin cấu hình căn cứ hỏa lực

  1. Nhấp vào Tải xuống google-services.json để có được tập tin cấu hình căn cứ hỏa lực Android của bạn.

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

  3. (Gradle chỉ xây dựng) Để kích hoạt dịch vụ căn cứ hỏa lực trong ++ Dự án C của bạn, thêm google-dịch vụ cắm để cấp cao nhất của bạn build.gradle tập tin.

    1. Thêm quy tắc để bao gồm plugin Gradle Dịch vụ của Google. Kiểm tra xem 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.3.10'  // Google Services plugin
            implementation 'com.google.android.gms:17.6.0'
          }
        }
      
        allprojects {
          // ...
      
          repositories {
            // Check that you have the following line (if not, add it):
            google()  // Google's Maven repository
            // ...
          }
        }
      
    2. Áp dụng plugin Gradle 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 đã hoàn tất việc thiết lập các tác vụ trong bảng điều khiển Firebase. Tiếp tục Thêm căn cứ hỏa lực C ++ SDK dưới đây.

Bước 5: Thêm căn cứ hỏa lực C ++ SDK

Các bước trong phần này là một ví dụ về làm thế nào để thêm sản phẩm căn cứ hỏa lực hỗ trợ cho dự án căn cứ hỏa lực C ++.

  1. Tải căn cứ hỏa lực C ++ SDK , sau đó giải nén SDK ở đâu đó thuận tiện.

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

  2. Trong dự án của bạn là gradle.properties tập tin, xác định vị trí của SDK đã được giải nén:

    systemProp.firebase_cpp_sdk.dir=full-path-to-SDK
    
  3. Để dự án của bạn settings.gradle tập tin, thêm các nội dung sau đây:

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

    Đã 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 không đượ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. Để dự án của bạn CMakeLists.txt tập tin, thêm các nội dung sau đây.
    Bao gồm các thư viện cho các sản phẩm căn cứ hỏa lực mà bạn muốn sử dụng trong ứng dụng của bạn.

    Đã 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 không đượ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 đế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ị 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 của bạn trên một giả lập mà có quyền truy cập mạng, giao diện điều khiển căn cứ hỏa lực thông báo cho bạn rằng kết nối ứng dụng của bạn được hoàn tất.

Bạn đã sẵn sàng! Ứ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ề các thư viện C ++ căn cứ hỏa lực trong tài liệu tham khảo và trong SDK phiên bản mã 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 C ++ thư viện dành cho iOS được liệt kê trên phiên bản iOS của trang thiết lập này .

Sản phẩm Firebase Thư viện tài liệu tham khảo
( firebaseCpp.dependencies
cho build.gradle tập tin)
Thư viện tài liệu tham khảo
( firebase_libs
cho CMakeLists.txt tập tin)
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
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
Nhắn tin qua đám mây messaging firebase_messaging
(recommended) 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
(recommended) 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
(recommended) firebase_analytics
(bắt buộc) firebase_app

Thông tin bổ sung để thiết lập điện thoại 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, xem Nhận báo cáo sự cố Android NDK .

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

Căn cứ hỏa lực cung cấp kịch bản generate_xml_from_google_services_json.py để chuyển đổi google-services.json để .xml nguồn lực mà bạn có thể đưa vào dự án của bạn. Tập lệnh này áp dụng cùng một chuyển đổi mà plugin Gradle dịch vụ của 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 sử dụng Gradle (ví dụ, bạn sử dụng ndk-build, makefiles, Visual Studio, vv), bạn có thể sử dụng kịch bản này để tự động hóa việc tạo ra Android Chuỗi Tài .

ProGuard

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

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

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

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 dịch vụ của Google Play

Hầu hết các căn cứ hỏa lực C ++ thư viện yêu cầu dịch vụ Google Play được trên thiết bị Android của khách hàng. Nếu một căn cứ hỏa lực C ++ trở lại thư viện kInitResultFailedMissingDependency về khởi tạo, nó có nghĩa là dịch vụ của Google Play là không có sẵn trên thiết bị của khách hàng (có nghĩa là nó cần phải được cập nhật, kích hoạt, cho phép cố định, vv). 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 tại sao các dịch vụ Google Play có sẵn trên các thiết bị của khách hàng (và cố gắng sửa chữa nó) 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ê liệu các dịch vụ của Google Play có được yêu cầu trên thiết bị khách đối với từng sản phẩm Firebase được hỗ trợ hay không.

Thư viện Firebase C ++ Các dịch vụ của Google Play được yêu cầu 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
Cloud Firestore 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 của 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 các dịch vụ của Google Play trên thiết bị khách. Tuy nhiên, nếu bạn đang sử dụng com.google.android.gms:play-services-ads-lite phụ thuộc, thay vì tiêu chuẩn com.google.firebase:firebase-ads phụ thuộc được liệt kê ở trên, Dịch vụ Google Play là bắt buộc.

AdMob khởi sẽ chỉ trả lại kInitResultFailedMissingDependency khi cả hai sau đây là đúng:

  • Các dịch vụ của 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 một quy trình làm việc máy tính để bàn (beta)

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

  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 điều 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 nền tảng di động
  2. Tạo một phiên bản máy tính để bàn của tập tin cấu hình căn cứ hỏa lực:

    • Nếu bạn thêm Android google-services.json tập tin - Khi bạn chạy ứng dụng của bạn, căn cứ hỏa lực nằm tập tin di động này, sau đó tự động tạo ra một máy tính để bàn căn cứ hỏa lực tập tin cấu hình ( google-services-desktop.json ).

    • Nếu bạn thêm vào iOS GoogleService-Info.plist tập tin - Trước khi bạn chạy ứng dụng, bạn cần phải chuyển đổi tập tin di động này cho một máy tính để bàn căn cứ hỏa lực tập tin cấu hình. Để chuyển đổi các tập tin, chạy lệnh sau từ thư mục tương tự như của bạn GoogleService-Info.plist file:

      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 vào quy trình thiết lập bảng điều khiển Firebase. Thăm Hiểu căn cứ hỏa lực dự án để tìm hiểu thêm về các file config.

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

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

    1. Đặt bạn FIREBASE_CPP_SDK_DIR biến môi trường đến vị trí của các căn cứ hỏa lực đã được giải nén C ++ SDK.

    2. Để dự án của bạn CMakeLists.txt tập tin, thêm các nội dung sau đây, bao gồm các thư viện cho các sản phẩm căn cứ hỏa lực 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 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 ++ của bạn.

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

Các căn cứ hỏa lực C ++ SDK bao gồm hỗ trợ công việc máy tính để bàn cho một tập hợp con của các tính năng, cho phép một số phần của căn cứ hỏa lực được sử dụng trong máy tính để bàn độc lập được xây dựng trên Windows, MacOS và Linux.

Sản phẩm Firebase Thư viện tài liệu tham khảo (sử dụng CMake)
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
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 đến máy tính để bàn.

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

Các Realtime Cơ sở dữ liệu SDK cho máy tính để bàn 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 các chỉ số mà bạn sử dụng với Query::OrderByChild() trên máy tính để bàn hoặc thính giả của bạn sẽ thất bại.

Thông tin bổ sung để 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:

  • Xây dựng nền tảng: chế độ 32-bit (x86) so với chế độ 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 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 ++ Các phụ thuộc thư viện SDK Windows
Xác thực advapi32, ws2_32, crypt32
Cloud Firestore 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). Khung cũng được cung cấp để tạo sự thuận tiện cho bạn.

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

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

  • pthread thư viện hệ thống
  • CoreFoundation khuôn khổ hệ thống hệ điều hành MacOS
  • Foundation khuôn khổ hệ thống hệ điều hành MacOS
  • Security khuôn khổ hệ thống hệ điều hành MacOS
  • GSS khuôn khổ hệ thống hệ điều hành MacOS
  • Kerberos khuôn khổ hệ thống hệ điều hành MacOS
  • SystemConfiguration khuôn khổ hệ thống hệ điều hành MacOS

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 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 tra bằng GCC 4.8.0, GCC 7.2.0 và Clang 5.0 trên Ubuntu.

Khi xây dựng C ++ ứng dụng máy tính để bàn trên Linux, liên kết các pthread thư viện hệ thống để 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 xây dựng đang với GCC 5 hay muộn, xác định -D_GLIBCXX_USE_CXX11_ABI=0 .

Bước tiếp theo