Android:由于firebase导致应用程序崩溃

时间:2016-09-15 13:02:01

标签: android firebase

今天我在一台新设备上测试了我的应用程序(见下文),我在发布时就获得了一个例外。我无法启动主要活动。

设备:Genymotion三星Galaxy S2 - Android 4.1.1 - API 16

未安装Google Play服务。

E/AndroidRuntime: FATAL EXCEPTION: main
    java.lang.NoClassDefFoundError: com.google.firebase.g
     at com.google.firebase.b.a(Unknown Source)
     at com.google.firebase.provider.FirebaseInitProvider.onCreate(Unknown Source)
     at android.content.ContentProvider.attachInfo(ContentProvider.java:1058)
     at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source)
     at android.app.ActivityThread.installProvider(ActivityThread.java:4560)
     at android.app.ActivityThread.installContentProviders(ActivityThread.java:4190)
     at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4132)
     at android.app.ActivityThread.access$1300(ActivityThread.java:130)
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1255)
     at android.os.Handler.dispatchMessage(Handler.java:99)
     at android.os.Looper.loop(Looper.java:137)
     at android.app.ActivityThread.main(ActivityThread.java:4745)
     at java.lang.reflect.Method.invokeNative(Native Method)
     at java.lang.reflect.Method.invoke(Method.java:511)
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
     at dalvik.system.NativeStart.main(Native Method)

gradle build:

android {
   compileSdkVersion 23
   buildToolsVersion '23.0.2'
   useLibrary 'org.apache.http.legacy'

   defaultConfig {
     applicationId "com.app"
     minSdkVersion 10
     targetSdkVersion 21
     multiDexEnabled true
   }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile('com.crashlytics.sdk.android:crashlytics:2.5.5@aar') {
        transitive = true;
    }

    compile 'com.android.support:recyclerview-v7:24.2.0'
    compile 'com.android.support:appcompat-v7:24.2.0'
    compile 'com.google.android.gms:play-services:9.4.0'
    compile 'com.mcxiaoke.volley:library:1.0.19'
    compile 'com.github.chrisbanes.actionbarpulltorefresh:extra-abc:+'
    compile 'com.github.castorflex.smoothprogressbar:library:1.1.0'
    compile 'com.jeremyfeinstein.slidingmenu:library:1.3@aar'
    compile 'com.google.android.gms:play-services-ads:9.4.0'
    compile 'com.google.android.gms:play-services-identity:8.4.0'
    compile 'com.google.android.gms:play-services-gcm:9.4.0'
    compile 'com.google.android.gms:play-services-auth:9.4.0'
}

由于缺少Play服务而崩溃吗?

注意:我在一个月前实施了firebase,并且正在其他设备上工作。

4 个答案:

答案 0 :(得分:2)

虽然build.gradle文件中有multiDexEnabled true,但您的依赖项中缺少compile 'com.android.support:multidex:1.0.1'。我怀疑Mulidex是否有效。查看Multidex configuration instructions并确保您已正确完成所有操作。

此外,包含compile 'com.google.android.gms:play-services:9.4.0'不是一个好习惯。这会将所有 Google Play和Firebase库添加到您的应用中,从而增加构建时间和APK文件的大小。仅使用您需要的库替换play-services:9.4.0上的依赖项。 Google Play图书馆列表为provided here,Firebase图书馆为listed here

答案 1 :(得分:1)

尝试将此 apply plugin:' com.google.gms.google-services' 添加到您的gradle构建文件的末尾

答案 2 :(得分:0)

在清单文件的应用程序标记中添加以下行:

机器人:名称= “android.support.multidex.MultiDexApplication”

答案 3 :(得分:-1)

您说得对,Firebase需要Google Play服务。正如Google Play Services 9.0发布公告中所述: Google Play Services 9.0

  

Firebase是使用Google Play服务9.0

构建的