iOS および Android 用の Firebase 上に C++ インターフェイスを提供する Firebase C++ SDK を使用して、C++ ゲームを強化します。
プラットフォーム ネイティブ コードを記述する必要なく、C++ コードから完全に Firebase にアクセスします。また、Firebase SDK は、Firebase で使用される多くの言語固有のイディオムを、C++ 開発者にとってより使い慣れたインターフェイスに変換します。
Firebase ゲームのページで、Firebase を使用してゲームをパワーアップする方法の詳細を確認してください。
すでに Firebase を C++ プロジェクトに追加していますか? Firebase C++ SDKの最新バージョンを使用していることを確認してください。
前提条件
Android Studio、IntelliJ、VS Code など、好みのエディターまたは IDE をインストールします。
Android SDKを入手します。
プロジェクトが次の要件を満たしていることを確認してください。
API レベル 19 (KitKat) 以上を対象としています
Gradle を使用し、CMake で構成されています
物理デバイスをセットアップするか、エミュレーターを使用してアプリを実行します。
Google アカウントを使用して Firebase にサインインします。
ステップ 2 : Firebase プロジェクトを作成する
Firebase を C++ プロジェクトに追加する前に、Firebase プロジェクトを作成して C++ プロジェクトに接続する必要があります。 Firebase プロジェクトについて詳しくは、 Firebase プロジェクトを理解するをご覧ください。
ステップ 3 : アプリを Firebase に登録する
Android アプリで Firebase を使用するには、アプリを Firebase プロジェクトに登録する必要があります。アプリを登録することは、多くの場合、アプリをプロジェクトに「追加する」と呼ばれます。
Firebase コンソールに移動します。
プロジェクトの概要ページの中央にあるAndroidアイコン (
) または [アプリの追加] をクリックして、セットアップ ワークフローを起動します。[ Android パッケージ名] フィールドにアプリのパッケージ名を入力します。
パッケージ名は、デバイスと Google Play ストアでアプリを一意に識別します。
パッケージ名は、アプリケーション IDと呼ばれることがよくあります。
モジュール (アプリ レベル) の Gradle ファイルでアプリのパッケージ名を見つけます。通常は
app/build.gradle
(パッケージ名の例:com.yourcompany.yourproject
) です。パッケージ名の値は大文字と小文字が区別されることに注意してください。この Firebase Android アプリを Firebase プロジェクトに登録した後は、この値を変更することはできません。
(オプション)その他のアプリ情報を入力します:アプリのニックネームとデバッグ署名証明書 SHA-1 。
アプリのニックネーム: Firebase コンソールでのみ表示される、内部の便利な識別子
デバッグ署名証明書 SHA-1 : SHA-1 ハッシュは、Firebase Authentication ( Google サインインまたは電話番号サインインを使用する場合) とFirebase Dynamic Linksで必要です。
[アプリを登録]をクリックします。
ステップ 4 : Firebase 構成ファイルを追加する
[ google-services.json をダウンロード] をクリックして、Firebase Android 構成ファイルを取得します。
Firebase 構成ファイルには、プロジェクトの一意であるが秘密ではない識別子が含まれています。この構成ファイルの詳細については、 Firebase プロジェクトを理解するをご覧ください。
Firebase 構成ファイルはいつでも再ダウンロードできます。
構成ファイル名に
(2)
のような追加の文字が追加されていないことを確認してください。
IDE で C++ プロジェクトを開き、構成ファイルをプロジェクトに追加します。
Gradle ビルド — 構成ファイルを最上位の
build.gradle
ファイルと同じディレクトリに追加します。その他のビルド システム — 以下のカスタム ビルド システムを参照して、 Android 文字列リソースを生成してください。
(Gradle ビルドのみ) C++ プロジェクトで Firebase サービスを有効にするには、 google-services プラグインを最上位の
build.gradle
ファイルに追加します。ルールを追加して、Google Services Gradle プラグインを含めます。また、Google の Maven リポジトリがあることも確認してください。
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.15' // Google Services plugin implementation 'com.google.android.gms:18.1.0' } } allprojects { // ... repositories { // Check that you have the following line (if not, add it): google() // Google's Maven repository // ... } }
Google サービス Gradle プラグインを適用します。
apply plugin: 'com.android.application' // Add the following line: apply plugin: 'com.google.gms.google-services' // Google Services plugin android { // ... }
Firebase コンソールでのセットアップ タスクが完了しました。以下のFirebase C++ SDK の追加に進みます。
ステップ 5 : Firebase C++ SDK を追加する
このセクションの手順は、サポートされている Firebase 製品を Firebase C++ プロジェクトに追加する方法の例です。
Firebase C++ SDKをダウンロードし、SDK を便利な場所に解凍します。
Firebase C++ SDK はプラットフォーム固有ではありませんが、プラットフォーム固有のライブラリが含まれています。
プロジェクトの
gradle.properties
ファイルで、解凍した SDK の場所を指定します。systemProp.firebase_cpp_sdk.dir=full-path-to-SDK
プロジェクトの
settings.gradle
ファイルに、次の内容を追加します。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"
モジュール (アプリ レベル) の Gradle ファイル (通常は
app/build.gradle
) に、次の内容を追加します。
アプリで使用する Firebase プロダクトのライブラリ依存関係を含めます。分析が有効
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 }
分析が有効になっていません
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 }
プロジェクトの
CMakeLists.txt
ファイルに、次の内容を追加します。
アプリで使用する 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 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}")
分析が有効になっていません
# 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}")
アプリを同期して、すべての依存関係に必要なバージョンがあることを確認します。
アナリティクスを追加した場合は、アプリを実行して、Firebase が正常に統合されたことを示す確認を Firebase に送信します。それ以外の場合は、検証手順をスキップできます。
デバイスのログには、初期化が完了したことを示す Firebase 検証が表示されます。ネットワークにアクセスできるエミュレーターでアプリを実行した場合、 Firebase コンソールは、アプリの接続が完了したことを通知します。
これで準備完了です。 C++ アプリが登録され、Firebase サービスを使用するように構成されています。
利用可能なライブラリ
C++ Firebase ライブラリの詳細については、リファレンス ドキュメントとGitHubのオープンソース SDK リリースをご覧ください。
Android で利用可能なライブラリ(CMake を使用)
iOS 用の C++ ライブラリは、このセットアップ ページの iOS バージョンにリストされていることに注意してください。
Firebase プロダクト | ライブラリ参照 ( firebaseCpp.dependencies build.gradle ファイル用) | ライブラリ参照 ( firebase_libs CMakeLists.txt ファイルの場合) |
---|---|---|
AdMob | admob | firebase_admob (必須) firebase_analytics (必須) firebase_app |
分析 | analytics | firebase_analytics (必須) firebase_app |
認証 | auth | firebase_auth (必須) firebase_app |
クラウド ファイアストア | firestore | firebase_firestore (必須) firebase_auth (必須) firebase_app |
クラウド機能 | functions | firebase_functions (必須) firebase_app |
クラウド メッセージング | messaging | firebase_messaging (推奨) firebase_analytics (必須) firebase_app |
クラウドストレージ | storage | firebase_storage (必須) firebase_app |
動的リンク | dynamicLinks | firebase_dynamic_links (推奨) firebase_analytics (必須) firebase_app |
リアルタイム データベース | database | firebase_database (必須) firebase_app |
リモート設定 | remoteConfig | firebase_remote_config (推奨) firebase_analytics (必須) firebase_app |
モバイル設定に関する追加情報
NDK クラッシュ レポートを取得する
Firebase Crashlytics は、Android ネイティブ ライブラリを使用するアプリのクラッシュ レポートをサポートしています。詳細については、 「Android NDK クラッシュ レポートを取得する」を参照してください。
カスタム ビルド システム
Firebase は、スクリプトgenerate_xml_from_google_services_json.py
を提供して、プロジェクトに含めることができるgoogle-services.json
を.xml
リソースに変換します。このスクリプトは、Android アプリケーションのビルド時に Google Play サービス Gradle プラグインが実行するのと同じ変換を適用します。
Gradle を使用してビルドしない場合 (たとえば、ndk-build、makefiles、Visual Studio などを使用する場合)、このスクリプトを使用してAndroid String Resourcesの生成を自動化できます。
プロガード
多くの Android ビルド システムは、リリース モードのビルドにProGuardを使用して、アプリケーションのサイズを縮小し、Java ソース コードを保護します。
ProGuard を使用する場合は、ProGuard 構成で使用している Firebase C++ ライブラリに対応するlibs/android/*.pro
にファイルを追加する必要があります。
たとえば、Gradle で Google アナリティクスを使用している場合、 build.gradle
ファイルは次のようになります。
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 } } }
Google Play サービスの要件
ほとんどの Firebase C++ ライブラリでは、クライアントの Android デバイスにGoogle Play サービスが必要です。 Firebase C++ ライブラリが初期化時にkInitResultFailedMissingDependency
を返す場合、クライアント デバイスで Google Play サービスを利用できないことを意味します (更新、再アクティブ化、アクセス許可の修正などが必要であることを意味します)。クライアント端末の状況が改善されるまで、Firebase ライブラリは使用できません。
google_play_services/availability.h
の関数を使用して、クライアント デバイスで Google Play サービスが利用できない理由を調べる (そしてその修正を試みる) ことができます。
次の表に、サポートされている各 Firebase 製品のクライアント デバイスで Google Play サービスが必要かどうかを示します。
Firebase C++ ライブラリ | クライアント デバイスに必要な Google Play サービスは? |
---|---|
AdMob | 不要(通常) |
分析 | 不要 |
認証 | 必須 |
クラウド ファイアストア | 必須 |
クラウド機能 | 必須 |
クラウド メッセージング | 必須 |
クラウドストレージ | 必須 |
動的リンク | 必須 |
リアルタイム データベース | 必須 |
リモート設定 | 必須 |
AdMob と Google Play サービス
Google Mobile Ads SDK for Android のほとんどのバージョンは、クライアント デバイスに Google Play サービスがなくても正しく動作します。ただし、上記の標準のcom.google.firebase:firebase-ads
依存関係ではなく、 com.google.android.gms:play-services-ads-lite
依存関係を使用している場合は、 Google Play サービスが必要です。
AdMob の初期化では、次の両方が true の場合にのみkInitResultFailedMissingDependency
が返されます。
- クライアント デバイスで Google Play サービスを利用できません。
-
com.google.android.gms:play-services-ads-lite
を使用しています。
デスクトップ ワークフローをセットアップする (ベータ)
ゲームを作成するときは、多くの場合、最初にデスクトップ プラットフォームでゲームをテストしてから、開発の後半でモバイル デバイスに展開してテストする方がはるかに簡単です。このワークフローをサポートするために、Windows、macOS、Linux、および C++ エディター内で実行できるFirebase C++ SDK のサブセットを提供しています。
デスクトップ ワークフローの場合、次の手順を完了する必要があります。
- CMake 用に C++ プロジェクトを構成します。
- Firebase プロジェクトを作成する
- アプリ (iOS または Android) を Firebase に登録する
- モバイル プラットフォームの Firebase 構成ファイルを追加する
Firebase 構成ファイルのデスクトップバージョンを作成します。
Android
google-services.json
ファイルを追加した場合— アプリを実行すると、Firebase はこのモバイルファイルを見つけ、デスクトップの Firebase 構成ファイル (google-services-desktop.json
) を自動的に生成します。iOS の
GoogleService-Info.plist
ファイルを追加した場合— アプリを実行する前に、このモバイルファイルをデスクトップの Firebase 構成ファイルに変換する必要があります。ファイルを変換するには、GoogleService-Info.plist
ファイルと同じディレクトリから次のコマンドを実行します。generate_xml_from_google_services_json.py --plist -i GoogleService-Info.plist
このデスクトップ構成ファイルには、Firebase コンソールのセットアップ ワークフローで入力した C++ プロジェクト ID が含まれています。構成ファイルの詳細については、 Firebase プロジェクトを理解するをご覧ください。
Firebase SDK を C++ プロジェクトに追加します。
以下の手順は、サポートされている Firebase 製品を C++ プロジェクトに追加する方法の例として役立ちます。この例では、Firebase Authentication と Firebase Realtime Database の追加について説明します。
FIREBASE_CPP_SDK_DIR
環境変数を、解凍した Firebase C++ SDK の場所に設定します。プロジェクトの
CMakeLists.txt
ファイルに、使用する Firebase 製品のライブラリを含む次のコンテンツを追加します。たとえば、Firebase Authentication と 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}")
C++ アプリを実行します。
利用可能なライブラリ (デスクトップ)
Firebase C++ SDK には、機能のサブセットに対するデスクトップ ワークフロー サポートが含まれており、Firebase の特定の部分を Windows、macOS、および Linux 上のスタンドアロン デスクトップ ビルドで使用できます。
Firebase プロダクト | ライブラリ参照 (CMake を使用) |
---|---|
認証 | firebase_auth (必須) firebase_app |
クラウド ファイアストア | firebase_firestore firebase_auth firebase_app |
クラウド機能 | firebase_functions (必須) firebase_app |
クラウドストレージ | firebase_storage (必須) firebase_app |
リアルタイム データベース | firebase_database (必須) firebase_app |
リモート設定 | firebase_remote_config (必須) firebase_app |
Firebase は、Windows、macOS、および Linux 向けにビルドする際に便利なように、残りのデスクトップ ライブラリをスタブ (非機能) 実装として提供します。したがって、デスクトップを対象とするコードを条件付きでコンパイルする必要はありません。
Realtime Database デスクトップ
デスクトップ用 Realtime Database SDK は REST を使用してデータベースにアクセスするため、デスクトップのQuery::OrderByChild()
で使用するインデックスを宣言しないと、リスナーが失敗します。
デスクトップ設定に関する追加情報
Windows ライブラリ
Windows の場合、ライブラリのバージョンは以下に基づいて提供されます。
- ビルド プラットフォーム: 32 ビット (x86) モードと 64 ビット (x64) モード
- Windows ランタイム環境: マルチスレッド / MT とマルチスレッド DLL /MD
- ターゲット: リリース vs デバッグ
次のライブラリは、Visual Studio 2015 および 2017 を使用してテストされていることに注意してください。
Windows で C++ デスクトップ アプリをビルドする場合は、次の Windows SDK ライブラリをプロジェクトにリンクします。詳細については、コンパイラのドキュメントを参照してください。
Firebase C++ ライブラリ | Windows SDK ライブラリの依存関係 |
---|---|
認証 | advapi32, ws2_32, crypt32 |
クラウド ファイアストア | advapi32, ws2_32, crypt32, rpcrt4, ole32, shell32 |
クラウド機能 | advapi32, ws2_32, crypt32, rpcrt4, ole32 |
クラウドストレージ | advapi32, ws2_32, crypt32 |
リアルタイム データベース | advapi32, ws2_32, crypt32, iphlpapi, psapi, userenv |
リモート設定 | advapi32, ws2_32, crypt32, rpcrt4, ole32 |
macOS ライブラリ
macOS (Darwin) の場合、64 ビット (x86_64) プラットフォーム用のライブラリ バージョンが提供されます。便利なフレームワークも提供されています。
macOS ライブラリは、Xcode 13.3.1 を使用してテストされていることに注意してください。
macOS で C++ デスクトップ アプリをビルドする場合は、以下をプロジェクトにリンクします。
-
pthread
システム ライブラリ CoreFoundation
macOS システム フレームワークFoundation
macOS システム フレームワークSecurity
macOS システム フレームワークGSS
macOS システム フレームワークKerberos
macOS システム フレームワークSystemConfiguration
macOS システム フレームワーク
詳細については、コンパイラのドキュメントを参照してください。
Linux ライブラリ
Linux の場合、32 ビット (i386) および 64 ビット (x86_64) プラットフォーム用のライブラリ バージョンが提供されます。
Linux ライブラリは、Ubuntu で GCC 4.8.0、GCC 7.2.0、および Clang 5.0 を使用してテストされていることに注意してください。
Linux で C++ デスクトップ アプリをビルドする場合は、 pthread
システム ライブラリをプロジェクトにリンクします。詳細については、コンパイラのドキュメントを参照してください。 GCC 5 以降でビルドしている場合は、 -D_GLIBCXX_USE_CXX11_ABI=0
を定義します。
次のステップ
サンプルの Firebase アプリを調べる。
アプリを起動する準備をします。
- Google Cloud Console でプロジェクトの予算アラートを設定します。
- Firebase コンソールで使用状況と請求のダッシュボードを監視して、複数の Firebase サービスにわたるプロジェクトの使用状況の全体像を把握します。
- Firebase の起動チェックリストを確認します。