Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


NoClassDefFoundError para OkHttpClient

Después de añadir la dependencia de facebook en gradle estoy recibiendo este error de tiempo de ejecución:

compile 'com.facebook.android:facebook-android-sdk:4.6.0' 

Tenga en cuenta que también estoy usando okhttp:

  • Retenga el objeto Fragmento mientras gira
  • CollapsingToolbarDescargar y ocultar la barra de herramientas mientras se desplaza
  • Camera.PreviewCallback equivalente en Camera2 API
  • ¿Cómo maneja un servidor las solicitudes de servicio web de varios clientes?
  • Cómo proporcionar archivos de datos para las pruebas de unidad de Android
  • ¿Por qué ActionbarSharelock muestra sólo el icono de desbordamiento incluso hay espacio
  •   compile 'com.squareup.okhttp:okhttp:2.5.0' 

    Y el registro de errores es:

      E/AndroidRuntime: FATAL EXCEPTION: Thread-109754 Process: com.venkat.project, PID: 4453 java.lang.NoClassDefFoundError: com.squareup.okhttp.internal.Util at com.squareup.okhttp.OkHttpClient.<clinit>(OkHttpClient.java:57) at com.venkat.project.http.MyHTTPThread.run(MyHTTPThread.java:127) at com.venkat.project.http.MyHTTPThread.run(MyHTTPThread.java:61) at java.lang.Thread.run(Thread.java:841) 02-23 18:11:02.729 4453-4573/com.venkat.project I/dalvikvm: Rejecting re-init on previously-failed class Lcom/squareup/okhttp/OkHttpClient; v=0x0 

    Nota: Estoy recibiendo este error en Samsung móvil 4.4, pero en el emulador y en moto g 5.0 funciona.

  • Android forma correcta de utilizar OKHTTP singleton para consultas paralelas con cookies
  • Cómo obtener el centro del mapa para v2 android mapas?
  • Cómo incluir la biblioteca GitHub en su proyecto Android existente en eclipse
  • AlertDialog - no descartar en clic de artículo
  • Lectura de un archivo de imagen en mapa de bits de sdcard, ¿por qué estoy recibiendo una NullPointerException?
  • Cómo dar valores de porcentaje en ObjectAnimator en Android
  • 6 Solutions collect form web for “NoClassDefFoundError para OkHttpClient”

    Te estás poniendo

      java.lang.NoClassDefFoundError: com.squareup.okhttp.internal.Util at com.squareup.okhttp.OkHttpClient.<clinit>(OkHttpClient.java:57) at com.venkat.project.http.MyHTTPThread.run(MyHTTPThread.java:127) at com.venkat.project.http.MyHTTPThread.run(MyHTTPThread.java:61) 

    NoClassDefFoundError para OkHttpClient

     public class NoClassDefFoundError extends LinkageError 

    Lanzado si la máquina virtual de Java o una instancia de ClassLoader intenta cargar en la definición de una clase (como parte de una llamada de método normal o como parte de crear una nueva instancia utilizando la nueva expresión) y no se pudo encontrar ninguna definición de la clase.

    Cita de NoClassDefFoundError

    Deberías usar

     compile 'com.facebook.android:facebook-android-sdk:4.10.0' 

    Después de que usted puede obtener este error terminado con valor de salida no cero 2

    Entonces

     defaultConfig { ... minSdkVersion 14 //lower than 14 doesn't support multidex targetSdkVersion //Yours // Enabling multidex support. multiDexEnabled true } dependencies { compile 'com.android.support:multidex:1.0.0' } 
    1. Añadir multiDexEnabled true

    2. Llamar compile 'com.android.support:multidex:1.0.0' // o 1.0.1

    OkHttp persevera cuando la red es problemática: se recuperará silenciosamente de problemas comunes de conexión. Si su servicio tiene varias direcciones IP, OkHttp intentará direcciones alternativas si falla la primera conexión. Esto es necesario para IPv4 + IPv6 y para servicios alojados en centros de datos redundantes.

    Puede llamar a la última versión

     compile 'com.squareup.okhttp3:okhttp:3.2.0' 

    Finalmente

     compile 'com.squareup.okhttp3:okhttp:3.0.1' or // compile 'com.squareup.okhttp:okhttp:2.5.0' compile 'com.facebook.android:facebook-android-sdk:4.10.0' 

    Entonces

    Clean and Re-Build & Sync su proyecto. Espero que esto ayude .

    La última versión de Piccasso utiliza una versión anterior de Okhttp, necesitas usar una nueva dependencia

     compile 'com.squareup.okhttp3:okhttp:3.2.0' compile 'com.squareup.picasso:picasso:2.5.2' compile 'com.jakewharton.picasso:picasso2-okhttp3-downloader:1.0.2' 

    Ejemplo:

     File httpCacheDirectory = new File(getCacheDir(), "picasso-cache"); Cache cache = new Cache(httpCacheDirectory, 10 * 1024 * 1024); OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder().cache(cache); Picasso.Builder picassoBuilder = new Picasso.Builder(getApplicationContext()); picassoBuilder.downloader(new OkHttp3Downloader(clientBuilder.build())); Picasso picasso = picassoBuilder.build(); try { Picasso.setSingletonInstance(picasso); } catch (IllegalStateException ignored) { Log.e(LOG_TAG, "Picasso instance already used"); } 

    https://developer.android.com/tools/building/multidex.html

    Compatibilidad con Multidex para Android 5.0 y versiones posteriores

    Android 5.0 y versiones superiores usan un tiempo de ejecución llamado ART que soporta de forma nativa la carga de múltiples archivos dex de los archivos APK de la aplicación. ART realiza la precompilación en el momento de la instalación de la aplicación, que busca los archivos .dex de clases (..N) y los compila en un único archivo .oat para su ejecución por el dispositivo Android. Para obtener más información sobre el tiempo de ejecución de Android 5.0, consulte Presentación de ART. Eso significa que su aplicación funcionaría bien en el API de nivel 21 o superior.

    Compatibilidad con Multidex antes de Android 5.0

    Las versiones de la plataforma anteriores a Android 5.0 utilizan el tiempo de ejecución de Dalvik para ejecutar el código de la aplicación. De forma predeterminada, Dalvik limita las aplicaciones a un único archivo bytecode classes.dex por APK. Para evitar esta limitación, puede utilizar la biblioteca de soporte multidex, que se convierte en parte del archivo DEX principal de su aplicación y luego administra el acceso a los archivos DEX adicionales y al código que contienen.

    Trate de añadir esto

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

    En su manifiesto agregue la clase MultiDexApplication de la biblioteca de soporte multidex al elemento de la aplicación.

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

    Si la aplicación extiende la clase Application, puede reemplazar el método attachBaseContext () y llamar a MultiDex.install (this) para habilitar multidex.

     public void onCreate(Bundle arguments) { MultiDex.install(getTargetContext()); super.onCreate(arguments); ... } 

    Por último, tendrá que actualizar el archivo build.gradle como se muestra a continuación añadiendo multiDexEnabled true:

     defaultConfig { applicationId '{Project Name}' minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "1.0" multiDexEnabled true } 

    Espero que te ayude.

    Debe habilitar multidex para resolver este problema.

    En build.gradle

     apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion '23.0.2' dexOptions { incremental true javaMaxHeapSize "4g" } defaultConfig { applicationId "com.example.app" minSdkVersion 17 targetSdkVersion 22 versionCode 1 versionName "1.0" // Enabling multidex support. multiDexEnabled true } buildTypes { debug { shrinkResources true } release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { // Enabling multidex support. compile 'com.android.support:multidex:1.0.1' //Other Libraries } 

    En tu proyecto Clase de aplicación

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

    Aquí está el enlace oficial [ http://developer.android.com/tools/building/multidex.html%5D .

    Parece que has habilitado proguard. Si no necesita proguard en su aplicación, puede desactivarla en su build.gradle (app)

     debug { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } 

    Y si necesita proguard en su aplicación, siga este enlace donde el Sr. Jake Wharton ha resuelto esto.

    Creo que deberías probar en otro Sdk de Facebook por encima de 4.6.0

    Porque nadie va a usar un Sdk que está teniendo cualquier error …

    Introduzca aquí la descripción de la imagen

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.