LoginSignup
6
8

More than 5 years have passed since last update.

Firebase C++ SDKをAndroid・iOSに入れる

Last updated at Posted at 2017-05-24

FirebaseにはC++用のラッパーSDKが用意されていて、
これを使うとC++で開発しているiOS/Androidアプリから、
FirebaseのAPIを呼び出せるようになります。

C++ プロジェクトに Firebase を追加する

まだbetaのようです。
手順はリンク先のドキュメントに書かれていますが、結構ハマりポイントがあったので、
念のため残しておきます。

Android

設定ファイル

google-services.jsonをFirebaseのコンソールからダウンロードし、
プロジェクトに入れます。

build.gradle

プロジェクトルートのbuild.gradleに、com.google.gms:google-servicesを設定します

build.gradle
buildscript {
...
    dependencies {
...
        classpath 'com.google.gms:google-services:3.1.0'
    }
}
...

appのbuild.gradleで、com.google.gms.google-servicesと、dependenciesを設定します。
ドキュメントを見ながら必要な機能のみ追加してください。
coreanalyticsのエイリアスで、core(またはanalytics)は必須です。

build.gradle
apply plugin: 'com.android.application'

android {
...
}

dependencies {
...
    compile 'com.google.android.gms:play-services-base:10.0.1'
    compile 'com.google.firebase:firebase-core:10.0.1'
    compile 'com.google.firebase:firebase-ads:10.0.1'
    compile 'com.google.firebase:firebase-crash:10.0.1'
    compile 'com.google.firebase:firebase-messaging:10.0.1'
    compile 'com.google.firebase:firebase-auth:10.0.1'
    compile 'com.google.firebase:firebase-database:10.0.1'
    compile 'com.google.firebase:firebase-invites:10.0.1'
    compile 'com.google.firebase:firebase-config:10.0.1'
    compile 'com.google.firebase:firebase-storage:10.0.1'
...
}

apply plugin: 'com.google.gms.google-services'

CMakeLists.txt

CMakeLists.txtで、C++用ライブラリのリンク情報を記述します。
ダウンロードしたC++SDKを展開し、firebase_cpp_sdkディレクトリ配下の、
includeディレクトリをinclude_directoriesに、
.aがあるディレクトリをlink_directoriesに設定します。
target_link_librariesで、link_directoriesで指定したディレクトリにある
.aファイルを、必要な機能分指定します。

この時、libanalytics.aは一番上に記載しないとエラーとなるため注意してください。

(参考) Errors when linking Firebase C++ (analytics) library

CMakeLists.txt
...

set(FB_CPP_SDK "${CMAKE_CURRENT_SOURCE_DIR}/<SubDirectory>/firebase_cpp_sdk")
include_directories(${FB_CPP_SDK}/include)
link_directories(${FB_CPP_SDK}/libs/android/${ANDROID_ABI}/c++)

..

# add lib dependencies
target_link_libraries(native-lib
...
                      libanalytics.a
                      libapp.a
                      libadmob.a
                      libmessaging.a
                      libauth.a
                      libdatabase.a
                      libinvites.a
                      libremote_config.a
                      libstorage.a
                      )

初期化コード

上記までの設定でリンクが通ったはずなので、C++のソースで初期化処理を記載します。

Sample
#include "firebase/app.h"
#include "firebase/analytics.h"

auto fbApp = firebase::App::Create(firebase::AppOptions(), env, activity);
firebase::analytics::Initialize(*fbApp);

AndroidはJNIのenvactivityを渡す必要があります。
envJNIEnv*activityはJavaのActivityのjobjectです。

iOS

設定ファイル

iOSの場合はGoogleService-Info.plistをFirebaseコンソールからダウンロードし、
プロジェクトに入れておきます。

iOS用frameworkの追加

iOS用のframeworkを追加します。
iOSのドキュメントを参照してください。
Firebase/Coreと、その他必要な機能のframeworkを入れます。
Podで入れるか、直接SDKをダウンロードしてプロジェクトに追加します。
SDKに含まれる、以下のframeworkも必要となります。

  • FirebaseInstanceID.framework
  • GoogleInterchangeUtilities.framework
  • GoogleSymbolUtilities.framework
  • GoogleToolboxForMac.framework

.frameworkのパスを、Framework Search Pathに設定するのを忘れないでください。

C++用frameworkの追加

C++用SDK内の、以下のframeworkファイルを、必要な機能の分追加します。
firebase_cpp_sdk/frameworks/ios/universal/*.framework
firebase.frameworkfirebase_analytics.frameworkは必須です。

Other Liker Flagsの設定

Other Liker Flagsに、-ObjC を設定します。

初期化コード

iOSの場合は引数1つだけでOKです。

Sample
#include "firebase/app.h"
#include "firebase/analytics.h"

auto fbApp = firebase::App::Create(firebase::AppOptions());
firebase::analytics::Initialize(*fbApp);

以上です。
あとは各APIをC++から呼び出して使っていきます。

6
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8