在更新到新的Firebase之后获取Exception java.lang.NoClassDefFoundError:com.google.firebase.FirebaseOptions
我已经更新我的应用程序使用这个新的firebase,现在当我编译我的项目,我得到以下异常。
这是我的logcat:
11:57:54.533 27844-27844/com.example.dayshift_2.traveyy E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.dayshift_2.traveyy, PID: 27844 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)
我的Build.gradle:
apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { applicationId "com.example.dayshift_2.traveyy" minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "1.0" multiDexEnabled true } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } packagingOptions { exclude 'META-INF/LICENSE' exclude 'META-INF/LICENSE-FIREBASE.txt' exclude 'META-INF/NOTICE' } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.3.0' compile 'com.android.support:design:23.3.0' compile 'com.facebook.android:facebook-android-sdk:4.+' compile 'com.google.android.gms:play-services:9.0.0' compile 'com.google.firebase:firebase-database:9.0.0' compile 'com.google.firebase:firebase-auth:9.0.0' compile 'com.android.support:support-v13:23.3.0' compile 'com.roughike:bottom-bar:1.2.1' } apply plugin: 'com.google.gms.google-services'
不知道我从哪里得到这个例外。 任何帮助将不胜感激。 谢谢
这对我工作:
- 如果您还没有,请从Android SDK Manager> Extras将您的“Google Play服务”更新为版本30。
-
然后将
compile 'com.android.support:multidex:1.0.1'
添加到您的依赖项(或者,如果不需要,只需删除multiDexEnabled true
) -
将此属性添加到manifest中的应用程序标签:
android:name="android.support.multidex.MultiDexApplication"
如果您已经在Android Manifest中定义了自定义应用程序类,请从MultiDexApplication
而不是Application
扩展它
希望它有帮助!
使用最新的Google Play服务,但无法使用。 对我来说,这个过程正在工作:1.更新我的应用程序类:
public class App extends Application { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } }
-
更新的build.gradle文件:
defaultConfig {…
multiDexEnabled true
}
包括依赖关系:
dependencies { compile 'com.android.support:multidex:1.0.0' }
希望这会有所帮助。 谢谢
修复球员非常简单。如果您在项目中使用player-services和firebase,请确保您不要在google中导入所有可用的服务。只需导入您实际需要的API。 例如:
compile 'com.google.firebase:firebase-messaging:9.2.0' compile 'com.google.android.gms:play-services:9.2.0'
这样做可以给你noclassdeffounderrorTo要解决这个问题
删除播放服务并同步您的项目。 如果您在应用中使用广告或地图等依赖项,请定义特定的API。 喜欢:
compile 'com.google.android.gms:play-services-maps:9.2.0'
注意:最大不要尝试使用multiDexEnabled true 。 这应该是你解决问题的最后一步。
希望这是有帮助的。
我降级了我的谷歌播放服务依赖关系
compile 'com.google.android.gms:play-services:9.2.0'
至
compile 'com.google.android.gms:play-services:8.4.0'
这为我解决了这个问题。
请参阅下面的堆栈溢出链接进一步描述 。
请注意:升级到最新的谷歌播放服务
compile 'com.google.android.gms:play-services:9.4.0'
它也解决了这个问题。
或者,您可以选择性地导入您需要的某些服务,而不是导入所有的Google Play服务。
第一步:修复multidex
应用程序类:
public class StudyNApplication extends Application { @Override public void onCreate() { super.onCreate(); MultiDex.install(this); } }
等级文件
defaultConfig { ... multiDexEnabled true } dependencies { compile 'com.android.support:multidex:1.0.0' }
第2步:修复java.lang.NoClassDefFoundError:com.google.firebase.FirebaseOptions
去掉
compile 'com.google.android.gms:play-services:9.4.0'
添加两个lib:
compile 'com.google.android.gms:play-services-maps:9.4.0' compile 'com.google.android.gms:play-services-location:9.4.0'
它工作正常。
不要忘记它。
android:name="android.support.multidex.MultiDexApplication"
我解决了这个问题,并降低了游戏服务依赖8.4.0编译'com.google.android.gms:play-services:8.4.0'
@Override protected void attachBaseContext(Context newBase) { super.attachBaseContext(newBase); MultiDex.install(this); }
并将以下内容添加到清单
android:name="android.support.multidex.MultiDexApplication"
当我将目标SDK版本从22增加到23时,我遇到了同样的错误,我花了整整一天的时间来解决这个问题。 现在我终于找到了在你的build.gradle文件中使用不同的播放服务api的结果来源: https : //developers.google.com/android/guides/setup#add_google_play_services_to_your_project
我只添加相关的Api和我的应用程序工作正常。
我想我已经在这个答案中找到了解决这个问题的一个解决方案,请看一下,谢谢@Gabriele Mariotti ,他写道:
在你的顶级build.gradle你必须添加:
buildscript { // ... dependencies { // ... classpath 'com.google.gms:google-services:3.0.0' } }
然后在你的模块build.gradle:
apply plugin: 'com.android.application' android { // ... } dependencies { // ... } // ADD THIS AT THE BOTTOM apply plugin: 'com.google.gms.google-services'
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestIdToken(getString(**R.string.default_web_client_id**)) .requestEmail() .build();
在我的情况下,我改变了requestIdToken,它的工作。
dependencies { compile 'com.android.support:support-v4:25.0.1' compile 'com.google.firebase:firebase-ads:9.0.2' compile files('libs/StartAppInApp-3.5.0.jar') compile 'com.android.support:multidex:1.0.1' }
应用插件: 'com.google.gms.google-services'
。
在build.gradle
文件中降级你的依赖:
从:
compile 'com.google.android.gms:play-services:9.4.0'
至:
compile 'com.google.android.gms:play-services:7.3.0'
这在我的情况下工作,希望你一样。
试着解决…
在Gradle文件中
multiDexEnabled为true
编译'com.android.support:multidex:1.0.1'
清单文件
应用程序标签添加这一行
机器人:名字= “android.support.multidex.MultiDexApplication”