android exception firebase firebase-database firebase-realtime-database

android - Obtención de excepción java.lang.NoClassDefFoundError: com.google.firebase.FirebaseOptions después de actualizar a la nueva base de fuego



exception firebase-database (15)

He actualizado mi aplicación a la nueva base de fuego usando this y ahora cuando compilo mi proyecto obtengo la siguiente excepción.

Aquí está mi 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)

Mi 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''

No estoy seguro de dónde obtengo esta excepción. Cualquier ayuda será muy apreciada. Gracias


Antes de hacer todas esas soluciones agitadas, intente limpiar el proyecto o reconstruir el proyecto desde Android Studio.

java.lang. NoClassDefFoundError

Se producen excepciones cuando cambia cualquier nombre de Clase en su proyecto, pero no pudo obtener los cambios que realizó en Runtime .


Creo que he encontrado una solución para este problema en esta answer , échale un vistazo y agradece a @Gabriele Mariotti , escribió:

En su build.gradle de nivel superior, debe agregar:

buildscript { // ... dependencies { // ... classpath ''com.google.gms:google-services:3.0.0'' } }

Luego, en su módulo build.gradle:

apply plugin: ''com.android.application'' android { // ... } dependencies { // ... } // ADD THIS AT THE BOTTOM apply plugin: ''com.google.gms.google-services''


Es muy sencillo arreglarlo. Si está utilizando servicios de jugador y firebase tanto en su proyecto, asegúrese de no importar todos los servicios disponibles en Google. Simplemente importe las API que realmente necesita. Por ejemplo:

compile ''com.google.firebase:firebase-messaging:9.2.0'' compile ''com.google.android.gms:play-services:9.2.0''

Al hacer esto, puede darte noclassdeffounderror . Para solucionar esto

elimina play-services y sincroniza tu proyecto. Si tiene dependencia, como el uso de anuncios o mapas en su aplicación, defina la API específica. me gusta:

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

Nota: Maximum no intente usar multiDexEnabled true . Este debería ser tu último paso para arreglar algo.

Espero que esto sea útil.



Esto funcionó para mí:

  1. Si aún no lo ha hecho, actualice sus ''Servicios de Google Play'' a la Revisión 30 desde Android SDK Manager> Extras.

  1. Y luego agregue la línea compile ''com.android.support:multidex:1.0.1'' a sus dependencias (o simplemente elimine multiDexEnabled true si no es necesario)

  2. Agregue este atributo a la etiqueta de la aplicación en manifiesto: android:name="android.support.multidex.MultiDexApplication"
    Si ya tiene una clase de aplicación personalizada definida en el Manifiesto de Android, MultiDexApplication desde MultiDexApplication lugar de Application

Espero que haya ayudado!


Intenta resolverlo...

en archivo Gradle

multiDexEnabled true

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

Archivo de manifiesto

etiqueta de aplicación agregue esta línea

android: name = "android.support.multidex.MultiDexApplication"


Lo resolví agregando esto y reduciendo la dependencia de play-service a la compilación 8.4.0 ''com.google.android.gms: play-services: 8.4.0''

@Override protected void attachBaseContext(Context newBase) { super.attachBaseContext(newBase); MultiDex.install(this); }

y agregue lo siguiente al manifiesto

android:name="android.support.multidex.MultiDexApplication"


No lo olvides

android:name="android.support.multidex.MultiDexApplication"


Paso 1: arreglar multidex

Clase de aplicación:

public class StudyNApplication extends Application { @Override public void onCreate() { super.onCreate(); MultiDex.install(this); } }

Archivo de calificaciones

defaultConfig { ... multiDexEnabled true } dependencies { compile ''com.android.support:multidex:1.0.0'' }

Paso 2: corrige java.lang.NoClassDefFoundError: com.google.firebase.FirebaseOptions

retirar

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

Agregue dos lib:

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

Funcionó bien.


Reduzca su dependencia en el archivo build.gradle :

desde:

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

a:

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

Esto funcionó en mi caso, espero lo mismo para ti.


Usaba los últimos servicios de Google Play pero no funcionaba. Para mí este procedimiento está funcionando:

  1. Actualicé mi clase de aplicación:

    public class App extends Application { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } }

  2. Archivo build.gradle actualizado:

    defaultConfig { ... multiDexEnabled true }

  3. Dependencias incluidas:

    dependencies { compile ''com.android.support:multidex:1.0.0'' }


Bajé mi dependencia de google play-service de

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

a

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

que resolvió este problema para mí

Consulte el siguiente enlace de desbordamiento de pila para obtener una descripción más detallada .


Nota: al actualizar al último servicio de Google Play
compile ''com.google.android.gms:play-services:9.4.0'' también resolvió este problema.

O puede importar selectivamente ciertos servicios que necesita, en lugar de importar todos los servicios de Google Play.


Configure su aplicación para multidex para resolver este problema.

Para minSdkVersion 21 o superior, establezca multiDexEnabled en verdadero en su archivo build.gradle de nivel de módulo, como se muestra a continuación:

android { defaultConfig { //... minSdkVersion 21 targetSdkVersion 26 multiDexEnabled true } //... }

Para minSdkVersion API 20 o inferior

  1. Modifique el module-level build.gradle y agregue la biblioteca multidex como una dependencia, como se muestra a continuación:

    android { defaultConfig { ... minSdkVersion 15 targetSdkVersion 26 multiDexEnabled true } //... } dependencies { compile ''com.android.support:multidex:1.0.1'' }

  2. Si no anula la clase de Application , edite su archivo de manifest para configurar android:name en la etiqueta de la aplicación de la siguiente manera

    <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapp"> <application android:name="android.support.multidex.MultiDexApplication"> //... </application> </manifest>

    2.1.1. Si anula la clase de Application Extender MultiDexApplication

    public class MyApplication extends MultiDexApplication { //... }

    2.1.2. O si anula la clase de Application pero no es posible cambiar la clase base, puede anular el método attachBaseContext() y llamar a MultiDex.install (this) para habilitar multidex:

    public class MyApplication extends SomeOtherApplication { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } }

para más mdex-gradle

Espero que esto ayude a otros que enfrentan el mismo problema.


GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestIdToken(getString(**R.string.default_web_client_id**)) .requestEmail() .build();

En mi mismo caso cambié requestIdToken y funcionó.


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'' }

aplique el complemento: ''com.google.gms.google-services'' .