LoginSignup
4
1

More than 5 years have passed since last update.

MAMORIO SDKとFirebaseを組み合わせて嵌まった!

Last updated at Posted at 2017-10-19

MAMORIO SDKとFirebaseを組み合わせて嵌まった!

2017/10/21現在 MAMORIO SDK 7.3では、必要とするplay-services-locationのバージョンが11.0.4を指定しており、下記の問題は発生しなくなりました。

前回の記事 (https://qiita.com/KazuyukiEguchi/items/9ea711463f54d19c5daf) のアプリをベースにFirebaseを加えると言う話です。

教訓:build.gradleにちょっと記述すると、SDKを簡単に組み込めるが、そこには落とし穴が!

動作環境(2017/10/19現在)

Android Studio 2.3.3
MAMORIO SDK Version 7.1 (https://github.com/otoshimono/mamorio-sdk-android-bin)
UQ AQUOS U SHV37 (Android 6.0.1)

背景

付近のMAMORIOの情報が取得出来るようになったので、ログをデータベースに格納したいと、FirebaseのRealtime databaseに格納しようと、Firebaseのセットアップして、ビルドもOKで動くようになったぞと思っていたら、MAMORIOのサービスが落ちるようになってしまった。

AndroidMonitorの出力
10-19 13:02:52.960 16160-16160/.mamorio E/AndroidRuntime: FATAL EXCEPTION: main
                                                          Process: .mamorio, PID: 16160
                                                          java.lang.LinkageError: com.google.android.gms.common.GoogleApiAvailability
                                                              at com.google.android.gms.common.api.GoogleApiClient$Builder.<init>(Unknown Source)
                                                              at otoshimono.com.lost.mamorio.sdk.BackgroundRangingService.initGoogleAPI(BackgroundRangingService.java:1638)
                                                              at otoshimono.com.lost.mamorio.sdk.BackgroundRangingService.beginRanging(BackgroundRangingService.java:1499)
                                                              at otoshimono.com.lost.mamorio.sdk.BackgroundRangingService.onStartCommand(BackgroundRangingService.java:561)
                                                              at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3178)
                                                              at android.app.ActivityThread.access$2400(ActivityThread.java:173)
                                                              at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1534)
                                                              at android.os.Handler.dispatchMessage(Handler.java:102)
                                                              at android.os.Looper.loop(Looper.java:148)
                                                              at android.app.ActivityThread.main(ActivityThread.java:5639)
                                                              at java.lang.reflect.Method.invoke(Native Method)
                                                              at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:727)
                                                              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:617)

およ!?MAMORIO Serviceがどうやら、Google Service(GMS)のLocationサービスを使って位置情報を取得しているようだが、Exceptionが発生しているようだ!

原因

Android StudioのProjectでExternal Libraryの様子を見たところ

Firebaseを加える前の状態

171019-0001.png

play-serviceのライブラリのバージョンが10.2.6を取り込んでいるのが分かります。

Firebaseのライブラリ(11.0.4)が加えると

171019-0002.png

なんと!
play-serviceのライブラリのバージョンが、10.2.6と11.0.4が混在する状況になってしまいます。
この混在するのが、災いして、Exeptionを吐いていたと思われます。

対策

build.gradle(Modile:App)に
compile 'com.google.android.gms:play-services-location:11.0.4'
を追加することで、バージョンが11.0.4に統一されました。

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

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.0"
    defaultConfig {
        applicationId "jp.eguchi.android.mamoriosample2"
        minSdkVersion 23
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:26.+'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'

    compile 'jp.mamorio:mamorioSDK:7.1'

    compile 'com.google.android.gms:play-services-location:11.0.4'
    compile 'com.google.firebase:firebase-core:11.0.4'
}

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

171019-0003.png

以上、異なるバージョンが混在することがあるという教訓でした。

4
1
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
4
1