He actualizado mi aplicación a la nueva base de Firebase usando esto 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
Esto funcionó para mí:
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 obligatorio)
Agregue este atributo a la etiqueta de la aplicación en manifest: 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 sido de ayuda!
Usar los últimos servicios de Google Play pero no funcionaba. Para mí este procedimiento está funcionando:
Actualizado mi clase de aplicación:
public class App extends Application { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } }
Archivo build.gradle
actualizado:
defaultConfig { ... multiDexEnabled true }
Dependencias incluidas:
dependencies { compile 'com.android.support:multidex:1.0.0' }
Es tan fácil de arreglar chicos. Si estás usando player-services y firebase en tu proyecto, asegúrate de no importar todos los servicios disponibles en google. Solo importa las API que realmente necesitas. Por ejemplo:
compile 'com.google.firebase:firebase-messaging:9.2.0' compile 'com.google.android.gms:play-services:9.2.0'
De esta manera, puede darte ningún error de segundo grado . Para solucionarlo,
elimina los servicios de juego y sincroniza tu proyecto. Si tiene dependencia, como usar 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: máximo no intente utilizar multiDexEnabled true . Este debería ser su último paso para arreglar algo.
Espero que esto sea útil.
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 stack para obtener una descripción más detallada .
Nota: al actualizar a la última versión de google play-service
compile 'com.google.android.gms:play-services:9.4.0'
resolvió este problema también.
O bien, puede importar selectivamente ciertos servicios que necesite, en lugar de importar todos los servicios de google play.
Paso 1: arregla multidex
Clase de aplicación:
public class StudyNApplication extends Application { @Override public void onCreate() { super.onCreate(); MultiDex.install(this); } }
Archivo de grado
defaultConfig { ... multiDexEnabled true } dependencies { compile 'com.android.support:multidex:1.0.0' }
Paso 2: arregle java.lang.NoClassDefFoundError: com.google.firebase.FirebaseOptions
retirar
compile 'com.google.android.gms:play-services:9.4.0'
Agrega 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
No lo olvides
android:name="android.support.multidex.MultiDexApplication"
Lo resolví agregando esto y bajando la dependencia de play-service a 8.4.0 comstackndo ‘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"
Me enfrenté al mismo error cuando incrementé la targetSDKVersion del 22 al 23. Pasé un mínimo de un día entero para resolver el problema. Ahora, finalmente, encuentro el resultado que utiliza api de servicio de reproducción diferente en tu archivo build.gradle Fuente: https://developers.google.com/android/guides/setup#add_google_play_services_to_your_project
Agregué solo Api’s relevantes y mi aplicación está funcionando bien.
Creo que encontré una solución para este problema en esta respuesta , por favor, denle un vistazo y gracias a Gabriele Mariotti , él escribió:
En tu build.gradle de nivel superior, debes agregar:
buildscript { // ... dependencies { // ... classpath 'com.google.gms:google-services:3.0.0' } }
Luego en tu módulo 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();
En mi 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' }
aplicar el complemento: 'com.google.gms.google-services'
.
Intenta resolverlo…
en el archivo Gradle
multiDexEnabled true
comstackr ‘com.android.support:multidex:1.0.1’
Archivo manifiesto
etiqueta de aplicación agregar esta línea
android: name = “android.support.multidex.MultiDexApplication”
Configure su aplicación para multidex para resolver este problema.
Para
minSdkVersion
21 o superior configuremultiDexEnabled
como 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
Modifique 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' }
Si no anula la clase de la Application
, edite su archivo de manifest
para configurar android:name
en la etiqueta de la aplicación de la siguiente manera
2.1.1. Si invalida la clase de Application
Extender Application
MultiDexApplication
public class MyApplication extends MultiDexApplication { //... }
2.1.2. O si anula la clase de la Application
, pero no es posible cambiar la clase base, puede reemplazar el método attachBaseContext()
y llamar a MultiDex.install (esto) 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.
Reduzca su dependencia en el archivo build.gradle
:
de:
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.