java.lang.NoClassDefFoundError:com.google.firebase.FirebaseOptions

我在我的谷歌开发者控制台上得到这个奇怪的错误。 所以我用谷歌云testing实验室来看看真的发生了什么。 事实certificate,我的应用程序几乎在所有设备上都失败了

FATAL EXCEPTION: main Process: com.blackcurrantapps.iamin, PID: 16706 java.lang.NoClassDefFoundError: com.google.firebase.FirebaseOptions at com.google.firebase.FirebaseApp.zzbu(Unknown Source) at com.google.firebase.provider.FirebaseInitProvider.onCreate(Unknown Source) at android.content.ContentProvider.attachInfo(ContentProvider.java:1591) at android.content.ContentProvider.attachInfo(ContentProvider.java:1562) at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source) at android.app.ActivityThread.installProvider(ActivityThread.java:4871) at android.app.ActivityThread.installContentProviders(ActivityThread.java:4466) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4406) at android.app.ActivityThread.access$1500(ActivityThread.java:139) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1270) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5102) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) at dalvik.system.NativeStart.main(Native Method) 

这是testing的截图。 在这里输入图像说明

现在,这是有趣的部分, 我甚至不使用我的应用程序中的Firebase 。 当我在整个应用程序中查找path时,没有提到“Firebase”这个词。 我尽pipe使用谷歌云服务,login和谷歌应用程序引擎。

这是我的build.gradle文件:

 buildscript { repositories { maven { url 'https://maven.fabric.io/public' } } dependencies { classpath 'io.fabric.tools:gradle:1.+' } } apply plugin: 'com.android.application' apply plugin: 'io.fabric' apply plugin: 'com.google.gms.google-services' android { compileSdkVersion 23 buildToolsVersion '23.0.2' defaultConfig { applicationId "com.blackcurrantapps.iamin" minSdkVersion 16 targetSdkVersion 23 versionCode 11 versionName "Fixed Check in Bug" multiDexEnabled = true } buildTypes { release { shrinkResources true // minifyEnabled true // proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } packagingOptions { exclude 'META-INF/LICENSE' exclude 'META-INF/NOTICE' } dexOptions { javaMaxHeapSize "4g" } } repositories { maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } maven { url "https://oss.sonatype.org/content/groups/public/" } maven { url "https://jitpack.io" } maven { url 'https://maven.fabric.io/public' } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile('com.mikepenz:materialdrawer:4.5.8@aar') { transitive = true } compile 'com.mikepenz:google-material-typeface:1.2.0.1@aar' //Google Material Design Icons compile 'com.mikepenz:fontawesome-typeface:4.4.0.1@aar' compile('com.vincentbrison.openlibraries.android:dualcache:2.2.2@jar') { transitive = true; } compile project(':htmlDialog') compile('com.twitter.sdk.android:twitter:1.8.0@aar') { transitive = true; } compile 'com.android.support:palette-v7:23.4.0' compile 'com.android.support:multidex:1.0.1' compile 'com.android.support:appcompat-v7:23.4.0' compile 'com.android.support:design:23.4.0' compile 'com.google.android.gms:play-services-maps:9.0.0' compile 'com.google.android.gms:play-services-gcm:9.0.0' compile 'com.google.android.gms:play-services-identity:9.0.0' compile 'com.google.android.gms:play-services-base:9.0.0' compile 'com.google.android.gms:play-services-plus:9.0.0' compile 'com.google.android.gms:play-services-analytics:9.0.0' compile 'com.google.android.gms:play-services-location:9.0.0' compile 'com.android.support:cardview-v7:23.4.0' compile 'com.rengwuxian.materialedittext:library:2.1.3' compile 'com.twotoasters.jazzylistview:library:1.2.1' compile 'com.twotoasters.jazzylistview:library-recyclerview:1.2.1' compile 'com.pnikosis:materialish-progress:1.7' compile 'com.getbase:floatingactionbutton:1.10.1' compile 'com.squareup.picasso:picasso:2.5.2' compile 'com.squareup.okhttp:okhttp:2.6.0' compile 'me.dm7.barcodescanner:zbar:1.8.3' compile 'net.glxn.qrgen:android:2.0' compile 'com.edmodo:cropper:1.0.1' compile 'com.github.PhilJay:MPAndroidChart:v2.1.6' compile 'de.greenrobot:eventbus:2.4.0' compile 'com.android.support:support-v4:23.4.0' compile 'com.pavelsikun:material-seekbar-preference:0.12.1+' compile project(path: ':backend', configuration: 'android-endpoints') } 

有人可以帮我从这里出去吗 ?

Solutions Collecting From Web of "java.lang.NoClassDefFoundError:com.google.firebase.FirebaseOptions"

感谢您发布问题Sanket。 我是Firebasetesting实验室(原云testing实验室)的PM。 想要让你知道,这是我们现在应该修复的错误。

看来您的应用目前正在使用最新最好的Google Play服务。 我们更新了我们的设备,以便在上周使用它们,然后我们发现了一个使我们恢复到旧版本的错误。 现在,我们在我们的设备上重新部署了最新的Play服务,因此重新运行您的testing应该可以正常工作。 如果没有,请让我知道,我们会调查并修复它。

我find了一个适合我的解决scheme。 我正在导入整个谷歌播放服务9.0.1库。 临时解决方法是只导入您的应用程序实际需要的API。 你可以在这里获得所有的API列表。

与我的情况:使用FCM和谷歌地图

 //for FCM compile 'com.google.firebase:firebase-messaging:9.4.0' //for Map compile 'com.google.android.gms:play-services:9.4.0' 

我已经修复:删除

 compile 'com.google.android.gms:play-services:9.4.0' 

和使用

 compile 'com.google.android.gms:play-services-maps:9.4.0' compile 'com.google.android.gms:play-services-location:9.4.0' 

它工作正常。

如果这可以帮助其他我解决这个使用这个,虽然这是无处与Firebase链接,但它实际上解决了我的崩溃

  1. compile 'com.android.support:multidex:1.0.1'添加到app / build.gradle。

  2. android:name="android.support.multidex.MultiDexApplication"添加到AndroidManifest.xml中的应用程序标签。

  3. 如果您正在使用自定义应用程序类,请跳过AndroidManifest.xml并使您的Application类扩展MultiDexApplication而不是Application。

您必须在Android依赖项上使用com.google.firebase:firebase-ads:9.0.2 AdMob,

 compile 'com.google.firebase:firebase-ads:9.0.2' 

并删除你的

 play-services (com.google.android.gms: play-services:9.0.2) 

这个对我有用!

你会尝试下面的代码片段:

 defaultConfig { multiDexEnabled true } dependencies { compile 'com.android.support:multidex:1.0.0' } public class Controller extends Application { @Override protected void attachBaseContext(Context newBase) { super.attachBaseContext(newBase); MultiDex.install(this); } } 

只需降级谷歌播放服务依赖项compile 'com.google.android.gms:play-services:8.3.0' ,问题就解决了。

我希望现在还不迟。 Firebase造成了麻烦,所以我排除了它。 我刚刚在模块gradle上添加了这个:

 configurations { all*.exclude group: 'com.google.firebase', module: 'firebase-common' } 

原来我的MultiDex使用是错误的,并导致此错误。 这应该在官方文档中真正提到的地方。


如何正确地做到这一点:

在Gradle.build(应用程序级别)

 dependencies { compile 'com.android.support:multidex:1.0.1' 

在清单中,添加

 <application android:name=".Global" ... 

在Application类中,

 public class Global extends MultiDexApplication { ... } 

在Android 4.4中,solucion与此类似( https://stackoverflow.com/a/38707231/3377472 ):

– 我有Google Play服务修订版本33

1)configurationbuild.gradle和依赖项

启用multidex支持并添加multidex库

  android { compileSdkVersion 23 buildToolsVersion '23.0.3' defaultConfig { applicationId "packagename" minSdkVersion 14 targetSdkVersion 23 versionCode 1 versionName "1.0" //------- Enabling multidex support----------. multiDexEnabled true } dexOptions { javaMaxHeapSize "3g"//use 3Gb of ram to launch android } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } productFlavors { } } dependencies { compile 'com.android.support:multidex:1.0.1' // 1.0.0 // if you are using google maps compile 'com.google.android.gms:play-services-maps:9.2.0' compile 'com.google.android.gms:play-services-location:9.2.0' } 

2)编辑清单,并添加这个android:名称

 <application android:name="android.support.multidex.MultiDexApplication" ... ..... activity android:name="packagename.Application" .... ... </activity> 

3)应用程序类

我的应用程序类是:

 import android.support.multidex.MultiDex; public class Application extends AppCompatActivity { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //this is the solution MultiDex.install(this); setContentView(R.layout.layout_example); ---- ---- 

不知道这是否有帮助,但我有使用Android SDK 19相同的问题,这是让我疯了。 我不使用Firebase(至less不是有目的的)我不知道为什么,但是当我在gradleconfiguration中设置“minifyEnabled true”时,错误停止了。

我看到你的发行版中有你的注释。

如果您使用的是谷歌播放服务,请确保您添加特定的服务。 例如,当使用地图时:

 compile 'com.google.android.gms:play-services-maps:xxx 

代替

  compile 'com.google.android.gms:play-services:9.6.1' 

这将减less代码的大小,编译将不需要使用“multidex”function。 如果碰巧你已经包括在内

 { multiDexEnabled true } 

在你的代码中尝试删除它和不必要的库引用