android - tutorial - java.lang.NoClassDefFoundError: com.google.firebase.FirebaseOptions
firebase android app (12)
Debe usar com.google.firebase: firebase-ads: 9.0.2 AdMob en dependencias de Android,
compile ''com.google.firebase:firebase-ads:9.0.2''
y elimina tu
play-services (com.google.android.gms: play-services:9.0.2)
¡Esto funciona para mi!
Estaba obteniendo este extraño error en mi consola de desarrollador de Google. Así que utilicé Google Cloud Test Lab para ver qué está pasando realmente. Resulta que mi aplicación está fallando en casi todos los dispositivos
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)
Aquí hay una captura de pantalla de la Prueba.
Ahora esta es la parte divertida, ni siquiera uso Firebase en mi aplicación . No hay ninguna referencia a la palabra "Firebase" cuando hago una búsqueda en la ruta de mi aplicación completa. Sin embargo, sí uso los servicios de Google Cloud, el inicio de sesión y el motor de la aplicación de Google.
Aquí está mi archivo 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'')
}
Puede alguien ayudarme aquí ?
En Android 4.4, la solución fue similar a esta ( https://.com/a/38707231/3377472 ):
-Tengo revisión de servicios de Google Play 33
1) Configurar build.gradle y dependencias
Habilitado soporte multidex y agregar biblioteca de 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) Editar Manifiesto y agregar este android: nombre
<application
android:name="android.support.multidex.MultiDexApplication"
...
.....
activity
android:name="packagename.Application"
....
...
</activity>
3) Clase de aplicación
-Mi clase de aplicación es:
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);
----
----
Encontré una solución que funcionó para mí. Estaba importando toda la biblioteca de los servicios de google play 9.0.1. La solución temporal es importar solo las API que su aplicación realmente necesita. Puede obtener la lista completa de API here .
Espero que no sea demasiado tarde. Firebase estaba causando problemas, así que lo excluí. Acabo de agregar esto en el módulo gradle:
configurations {
all*.exclude group: ''com.google.firebase'', module: ''firebase-common''
}
Gracias por publicar la pregunta Sanket. Soy el primer ministro en Firebase Test Lab (anteriormente Cloud Test Lab). Quería decirte que esto es un error de nuestro lado que ahora debería solucionarse.
Parece que su aplicación actualmente usa los últimos y mejores servicios de Google Play. Actualizamos nuestros dispositivos para usarlos la semana pasada y luego descubrimos un error que nos hizo volver a una versión anterior. En este momento, volvimos a implementar los últimos servicios de Play en nuestros dispositivos, por lo que volver a ejecutar las pruebas debería funcionar. De lo contrario, házmelo saber y lo investigaremos y solucionaremos.
Intentarías seguir el fragmento de código:
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);
}
}
No estoy seguro si esto ayuda pero tuve el mismo problema al usar Android SDK 19 y me estaba volviendo loco. No uso Firebase (al menos no a propósito) No estoy seguro de por qué, pero el error cesó cuando configuré "minifyEnabled true" en la configuración de Gradle.
Veo que tiene el suyo comentario en su sección de lanzamientos .
Resulta que mi uso de MultiDex
era incorrecto y eso causa este error. Esto realmente debería haber sido mencionado en la documentación oficial en alguna parte.
Cómo hacerlo de la manera correcta:
En Gradle.build (nivel de aplicación)
dependencies {
compile ''com.android.support:multidex:1.0.1''
En el Manifiesto, agrega
<application
android:name=".Global"
...
En la clase de Aplicación,
public class Global extends MultiDexApplication {
...
}
Si está utilizando servicios de google play, asegúrese de agregar el servicio específico. Por ejemplo, al usar mapas:
compile ''com.google.android.gms:play-services-maps:x.x.x
en lugar de
compile ''com.google.android.gms:play-services:9.6.1''
Esto reducirá el tamaño del código y la compilación no requerirá el uso de la función "multidex". Si por casualidad ya has incluido
{
multiDexEnabled true
}
en su código intente eliminarlo y referencias innecesarias de la biblioteca
Si esto puede ayudar a otros, lo solucioné usando esto, aunque esto no está relacionado con Firebase, pero en realidad solucionó mi bloqueo
Agregue
compile ''com.android.support:multidex:1.0.1''
a app / build.gradle.Agregue
android:name="android.support.multidex.MultiDexApplication"
a la etiqueta de la aplicación en AndroidManifest.xml.Si está utilizando una clase de aplicación personalizada, omita AndroidManifest.xml y haga que su clase de aplicación extienda MultiDexApplication en lugar de la aplicación.
Simplemente restarle importancia a la dependencia de Google play-service para compile ''com.google.android.gms:play-services:8.3.0''
y el problema se resolverá.
con mi caso: use el mapa de FCM y Google
//for FCM
compile ''com.google.firebase:firebase-messaging:9.4.0''
//for Map
compile ''com.google.android.gms:play-services:9.4.0''
Lo he corregido: eliminado
compile ''com.google.android.gms:play-services:9.4.0''
y utilizado
compile ''com.google.android.gms:play-services-maps:9.4.0''
compile ''com.google.android.gms:play-services-location:9.4.0''
Funcionó bien