studio library android picasso okhttp

android - library - OkHTTP y Picasso no se ejecutan juntos



retrofit vs okhttp android (6)

Cambia a Picasso 2.3.2. También necesitarás okhttp-urlconnection-2.0.0-RC2.

Utilizo la biblioteca Picasso en mi proyecto para cargar imágenes y almacenarlas en caché. Funciona bien sin ningún problema. Sin embargo, cuando intento usar la biblioteca OkHttp para realizar la comunicación de datos con mi servidor (comunicación JSON), Picasso genera excepciones.

Uso los siguientes archivos jar: okhttp-2.0.0-RC2, okio-1.0.0, picasso-2.2.0. Cuando ejecuto mi proyecto después de agregar estos archivos jar, se bloquea con lo siguiente:

06-12 11:13:15.824: E/dalvikvm(12105): Could not find class ''com.squareup.okhttp.HttpResponseCache'', referenced from method com.squareup.picasso.OkHttpDownloader.<init>

Agregué okhttp solo para usar el siguiente método:

public static String executeHttpGet(String urlStr) { Response response = null; String result = ""; OkHttpClient client = new OkHttpClient(); try { Request request = new Request.Builder().url(urlStr).build(); response = client.newCall(request).execute(); result = response.body().string(); } catch (Exception ex) { } return result; }

El código anterior funciona sin ningún problema. Sin embargo, los códigos que utilizan la biblioteca de Picasso y que funcionaban perfectamente, comienzan a lanzar la siguiente opción:

06-12 11:19:49.307: E/AndroidRuntime(13036): FATAL EXCEPTION: main 06-12 11:19:49.307: E/AndroidRuntime(13036): java.lang.NoClassDefFoundError: com.squareup.okhttp.HttpResponseCache 06-12 11:19:49.307: E/AndroidRuntime(13036): at com.squareup.picasso.OkHttpDownloader.<init>(OkHttpDownloader.java:74) 06-12 11:19:49.307: E/AndroidRuntime(13036): at com.squareup.picasso.OkHttpDownloader.<init>(OkHttpDownloader.java:51) 06-12 11:19:49.307: E/AndroidRuntime(13036): at com.squareup.picasso.OkHttpDownloader.<init>(OkHttpDownloader.java:41) 06-12 11:19:49.307: E/AndroidRuntime(13036): at com.squareup.picasso.Utils$OkHttpLoaderCreator.create(Utils.java:319) 06-12 11:19:49.307: E/AndroidRuntime(13036): at com.squareup.picasso.Utils.createDefaultDownloader(Utils.java:171) 06-12 11:19:49.307: E/AndroidRuntime(13036): at com.squareup.picasso.Picasso$Builder.build(Picasso.java:490) 06-12 11:19:49.307: E/AndroidRuntime(13036): at com.squareup.picasso.Picasso.with(Picasso.java:390)

Mi camino de clase:

Si elimino okhttp-2.0.0-RC2, okio-1.0.0, las líneas de Picasso funcionan.

¿Por qué está sucediendo eso? ¿Cómo puedo usar dos bibliotecas juntas?


Esta combinación funciona para mí:

compile ''com.squareup.okhttp:okhttp:2.2.0'' compile ''com.squareup.okhttp:okhttp-urlconnection:2.2.0'' compile ''com.squareup.picasso:picasso:2.4.0''


Picasso utiliza 3 paquetes.

  1. Square.OkHttp
  2. Square.OkIO
  3. Plaza.Picasso

Desea agregar 2 veces el paquete OkHttp y OkIO debido al uso de la biblioteca OkHttp y la biblioteca Picasso.

Los 2 paquetes están incluidos en Picasso, no necesita incluir la biblioteca OkHttp en su proyecto.


Prueba estos:

compile ''com.squareup.picasso:picasso:2.5.2'' compile ''com.squareup.okhttp3:okhttp:3.0.1''


Si está usando eclipse IDE, en las propiedades del proyecto-> java build path-> order and export (última pestaña) verifique la biblioteca picasso

Tuve los mismos errores. funcionó para mí, espero que ayude.


//Below code for Picasso initializing once for the app private Picasso picasso; private OkHttpClient okHttpClient; okHttpClient = new OkHttpClient(); picasso = new Picasso.Builder(this) .downloader(new OkHttpDownloader(okHttpClient)) .build(); //Below code to retrieve the images whereever required on the app picasso.with(context).load(imageUrl).placeholder(R.drawable.ic_launcher)

El código anterior funciona bien para mí.