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

问题描述:

今天,我在新设备上测试了我的应用程序(请参阅下文),并在发布时获得了例外。我无法事件开始主要活动。安装API 16Android:由于Firebase导致应用程序崩溃

没有谷歌播放服务 - Genymotion三星Galaxy S2 - 安卓4.1.1:

设备

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这个编译:

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:[email protected]') { 
     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:[email protected]' 
    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' 
} 

是不是因为缺少播放服务的崩溃?

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

+0

请您Genymotion三星更新播放服务! –

虽然您的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

您说的没错,Firebase需要Google Play服务。由于在发行公告在这里提到的谷歌Play服务9.0: Google Play Services 9.0

火力地堡使用谷歌Play服务9.0

+0

我已经在安装了Google Play服务的三星Galaxy S5设备(4.4.2)上进行了测试,并且它一直在崩溃。 –

+0

另外,S5上安装的谷歌播放服务是9.4.52 –

尝试添加该应用内置插件:“com.google.gms.google -services'到您的gradle构建文件的末尾

在应用程序代码添加此行清单文件:

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