在 C+ 中開始使用 Firebase;+

1. 總覽

在本程式碼研究室中,您將以 Google Analytics 為例,瞭解如何在 Android 範例遊戲中整合 C++ Firebase Games SDK。您可以新增所需功能、整合一些基本分析邏輯來評估玩家進度,並與測試人員分享遊戲,搶先取得意見回饋。

逐步操作說明

如要與作者一起完成本程式碼研究室,請觀看這部影片:

課程內容

  • 如何將 Firebase 新增至以 Android CMake 為基礎的遊戲。
  • 如何找出所需的 C++ 和 Gradle 依附元件。
  • 如何記錄 Analytics 事件。
  • 如何偵錯 Analytics 事件。
  • 如何透過 App Distribution 分享遊戲。

軟硬體需求

  • Android Studio
  • 程式碼範例
  • 搭載 Google Play 服務的測試裝置或模擬器

2. 取得程式碼範例

GitHub 簽出或下載:

git clone https://github.com/FirebaseExtended/cmake-way-for-firebase.git

下載 Firebase SDK

MacOS/Linux:

sh download.sh

Windows (透過 PowerShell):

./download.ps1

您也可以手動下載 SDK。如果這麼做,Firebase C++ SDK 必須解壓縮到 /third_party,這樣名為 firebase_cpp_sdk 的資料夾就會包含 Firebase SDK 的根目錄 CMakeLists.txt

3. 執行範例遊戲

首先,請執行範例遊戲,確認一切運作正常。這是一款簡單的無限跑酷遊戲,關卡是程序生成的,而且只有一個跳躍按鈕。

  1. 依序選取「File」>「New」>「Import Project」(或從啟動畫面選取「Import Project」)
  2. 開啟存放區中包含的 proj.android/ 資料夾
  1. [選用] 開啟 proj.android/gradle.properties 並微調 PROP_APP_ABI。您可以移除目標架構以外的所有架構,縮短建構時間。PROP_APP_ABI=x86 只為模擬器建構 PROP_APP_ABI=armeabi-v7a 為大多數手機建構
  2. 按一下「Debug」按鈕 fa7d6449514b13c3.png,即可建構並執行遊戲。建構 Cocos2dx 遊戲引擎需要時間。

4. Firebase 控制台設定

  1. Firebase 控制台中建立新專案。5d2552e8450338d3.png
  2. 為其命名,例如「冰棒跑者」
  3. 啟用 Analytics 255468f27832bb18.png
  4. 新增或建立 Analytics 帳戶 c7fa1b1004135be3.png
  5. 在專案中新增 Android 應用程式 984b9f20cd590597.png
  6. com.firebase.popsiclerunner 新增為套件名稱。

fda079aab5b185d4.png

  1. 下載 google-services.json,然後複製到 proj.android/app 95aae8dd12033335.png
  1. 忽略新增 Firebase SDK 的操作說明,然後按一下「下一步」
  2. 系統要求驗證安裝作業時,您可以點選「略過此步驟」

5. 將 Firebase 新增至遊戲

將 Firebase SDK 新增至 CMakeLists.txt

開啟根層級的 CMakeLists.txt。頂端附近應有下列程式碼

CMakeLists.txt

cmake_minimum_required(VERSION 3.6)

set(APP_NAME popsiclerunner)

project(${APP_NAME})

並在該 CMakeLists.txt 檔案的結尾處加入下列幾行

CMakeLists.txt

add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/third_party/firebase_cpp_sdk)
target_link_libraries(${APP_NAME} firebase_analytics firebase_app)

add_subdirectory 包含 Firebase C++ SDK,並提供給這個遊戲使用

target_link_libraries將遊戲連結至專為 Android 建構的 Firebase C++ 程式庫。

新增 Google 服務外掛程式

如要連結 Firebase SDK,請將 Google 服務外掛程式新增至 Gradle 建構指令碼。如要這麼做,請開啟專案層級 build.gradle 檔案 (位於 proj.android 資料夾中)。並將 classpath 'com.google.gms:google-services:4.3.3' 新增為建構指令碼依附元件。

build.gradle

buildscript {
    repositories {
        google()
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:4.0.1'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
        classpath 'com.google.gms:google-services:4.3.3'  // Google Services plugin
    }
}

接著,將外掛程式新增至模組層級 build.gradle 檔案 (位於 proj.android/app 資料夾)。在 apply plugin: 'com.android.application' 下方新增 apply plugin: 'com.google.gms.google-services'

build.gradle

apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'  // Google Services plugin

在 Gradle 中找出 C++ SDK

如要告知 Gradle Firebase C++ SDK 的所在位置,請在 settings.gradle 檔案底部新增下列幾行。

settings.gradle

gradle.ext.firebase_cpp_sdk_dir = "$settingsDir/../third_party/firebase_cpp_sdk/"
includeBuild "$gradle.ext.firebase_cpp_sdk_dir"

新增 Android 依附元件

如要連結 Firebase 的 Android 依附元件,請開啟 popsicle_runner 的模組層級 Gradle 檔案 (位於 proj.android/app/build.gradle),並在結尾的典型 dependences { 區段之前新增下列內容:

build.gradle

apply from: "$gradle.firebase_cpp_sdk_dir/Android/firebase_dependencies.gradle"
firebaseCpp.dependencies {
    analytics
}

AndroidX 和 Jetifier

開啟 gradle.properties,在結尾加入下列內容,即可新增 AndroidX 和 Jetifier 支援:

gradle.properties

android.useAndroidX = true
android.enableJetifier = true

在遊戲中初始化 Firebase

開啟 Classes/AppDelegate.cpp,在遊戲中初始化 Firebase。在頂端新增下列 #include 指令:

AppDelegate.cpp

#include <firebase/app.h>
#include <firebase/analytics.h>

然後新增 App::Create,並初始化所需 Firebase 功能。如要這麼做,請找出 AppDelegate::applicationDidFinishLaunching,並在 auto scene = MainMenuScene::createScene() 前新增下列程式碼:

AppDelegate.cpp

{
    using namespace firebase;
    auto app = App::Create(JniHelper::getEnv(), JniHelper::getActivity());
    analytics::Initialize(*app);
}

如果對遊戲進行偵錯並重新整理 Firebase 資訊主頁,大約一分鐘後,您應該會看到一位新使用者。

6. 新增 Analytics

即使在開發初期,您也能使用數據分析工具,評估 Beta 版測試人員與遊戲的互動情形。系統會自動收集部分數據分析資料 (例如留存率報表),但加入專為特定遊戲量身打造的自訂事件,會更有助於分析。

建議您先在玩家開始關卡時記錄 Analytics 事件。我們可以根據關卡開始事件的數量,瞭解玩家在一個工作階段中重玩遊戲的頻率。

4b5df08c0f6b6938.png

此外,我們也會記錄玩家死亡時的進度。這有助於我們瞭解所做的變更如何影響單一工作階段的時長,並判斷玩家是否偏好較短/較難或較長/較簡單的遊戲。

新增 Analytics 標頭

開啟 Classes/PopsicleScene.cpp,在頂端加入 Firebase 標頭,以便進行 Analytics 呼叫。

PopsicleScene.cpp

#include <firebase/analytics.h>
#include <firebase/analytics/event_names.h>

記錄 Level Start 事件

如要在 Cocos2dx Director 暫存這個場景時記錄事件,請找出存根函式 PopsicleScene::onEnter()。請輸入下列程式碼,在此記錄「關卡開始」事件:

PopsicleScene.cpp

using namespace firebase;
analytics::LogEvent(analytics::kEventLevelStart);

記錄關卡結束事件

如要瞭解玩家的表現,請記錄「關卡結束」事件,並記錄玩家死亡時的進度。如要這麼做,請找出 PopsicleScene::gameOver(),並在設定 _gameOver = true; 之前,將此項目新增至 if(!_gameOver) { 區塊的結尾:

PopsicleScene.cpp

{
    using namespace firebase;
    analytics::LogEvent(analytics::kEventLevelEnd, "distance", _lastDistance);
}

kEventLevelEnd 是關卡結束事件。而 "distance" 則是「事件參數」。我們將在此新增最後記錄的距離,這項資料可做為玩家死亡前移動距離的良好近似值。

7. 測試事件

您現在可以點按「Debug」fa7d6449514b13c3.png,但 Analytics 資訊主頁需要一段時間才會回報任何事件。這是因為:1) 系統會將事件分批上傳 (約每小時一次),以節省電量;2) 報表每 24 小時產生一次。

啟用偵錯模式

您仍可將裝置設為偵錯模式,偵錯 Analytics 事件。

首先,請確認已安裝並設定 Android Debug Bridge (ADB)。輸入 adb devices 應會顯示要測試的裝置:

$ adb devices
List of devices attached
emulator-5554   device

然後執行下列 adb shell 指令:

adb shell setprop debug.firebase.analytics.app com.firebase.popsiclerunner

這會告知 Firebase Analytics 立即記錄事件,並自動將這些事件從一般報表中排除,以免測試時即時事件受到影響。如要稍後復原這項動作,只要輸入:

adb shell setprop debug.firebase.analytics.app .none.

查看活動

在 Firebase 控制台中開啟「DebugView」84472ac3a7ad9aff.png

按一下「Debug」圖示 fa7d6449514b13c3.png 並開始玩遊戲。遊戲中發生新事件後,您應該會立即看到這些事件。5e81dfa682497414.png

展開 level_end 事件後,您也會看到記錄的自訂「距離」參數。4451be4a6a97399c.png

8. 尋找測試人員

接下來,無論是工作室內部人員、親近好友或社群成員,您都希望他們能看到您的遊戲。Firebase 應用程式發布功能可讓您輕鬆邀請玩家試玩遊戲。

建構獨立二進位檔

首先,請依序選取「Build」>「Build Bundles(s) / APK(s)」>「Build APK(s)」14c6bd5549cdb57a.png,建構獨立 APK 以供分享。

Android Studio 會彈出對話方塊,讓您找出建構的檔案。如果錯過,可以點選「事件記錄」再次取得連結。ac730e3428689c4c.png

上傳至 Firebase 應用程式發布

  1. 開啟 App Distribution,然後按一下「開始使用」圖示 dcdafea94e4c1c15.png
  2. 將 .apk 檔案拖曳到「將任何 .apk 檔案拖曳到這裡,即可建立新版本」的方塊中。4b6f94a05391c63f.png
  3. 輸入您的電子郵件地址做為第一位測試人員。ce047d710befa44a.png
  4. 點選「下一步」。
  5. 新增說明並按一下「發布」

邀請測試人員

不必手動輸入每個電子郵件地址,只要建立邀請連結即可。使用這個邀請連結擷取使用者時,您也可以將他們加入測試人員群組。舉例來說,您可以藉此區分內部測試人員和外部測試人員。

  1. 按一下「測試人員和群組」圖示 7e380773faff4eb7.png
  2. 建立新群組 6b046c010b14adaf.png,並命名為「Android 測試人員」等。
  3. 按一下「邀請連結」圖示 a7fc2c8b01b6883e.png
  4. 按一下「新增邀請連結」
  5. 從下拉式選單中設定群組。d1b289e825d93d40.png
  6. 按一下「建立連結」
  7. 按一下「複製連結」,然後以任何方式分享

9. 恭喜

您已成功在以 C++ 為基礎的遊戲中加入 Analytics,並邀請了一些朋友一起玩,而且您知道如何在 Android 開發中常見的 CMake 和 Gradle 建構系統中,尋找及連結 Firebase 程式庫。

涵蓋內容

  • 如何將 Firebase 新增至以 Android CMake 為基礎的遊戲。
  • 如何找出所需的 C++ 和 Gradle 依附元件。
  • 如何記錄 Analytics 事件。
  • 如何偵錯 Analytics 事件。
  • 如何透過 App Distribution 分享遊戲。

後續步驟

  • 請嘗試以匿名方式登入使用者,並將他們的高分儲存至即時資料庫。
  • 在自己的遊戲中記錄 Analytics 事件。
  • 試著在 iOS 遊戲中加入 Analytics。

瞭解詳情