Uso de Google Guava con Android 1.6

Estoy usando la biblioteca Guava r09 en una aplicación de Android, pero estoy recibiendo el siguiente error cuando lo uso con 1.6. Es un poco extraño porque funciona bien en 1.5. Además, el método que se "no encuentra" está muy claramente allí. También intenté incluir el archivo de jsr305.jar pero esto todavía no trabaja.

Apreciar cualquier ayuda, haciendo I / O en Java es tan doloroso sin Guava.

Este es el código:

String timestamp = CharStreams.toString( CharStreams.newReaderSupplier(timestampFile, Charset.forName("UTF-8"))); 

Esta es la excepción:

 05-08 12:16:41.163: ERROR/dalvikvm(335): Could not find method com.google.common.io.LineReader.<init>, referenced from method com.google.common.io.CharStreams.readFirstLine 05-08 12:16:41.163: WARN/dalvikvm(335): VFY: unable to resolve direct method 6798: Lcom/google/common/io/LineReader;.<init> (Ljava/lang/Readable;)V 05-08 12:16:41.163: WARN/dalvikvm(335): VFY: rejecting opcode 0x70 at 0x0009 05-08 12:16:41.163: WARN/dalvikvm(335): VFY: rejected Lcom/google/common/io/CharStreams;.readFirstLine (Lcom/google/common/io/InputSupplier;)Ljava/lang/String; 05-08 12:16:41.163: WARN/dalvikvm(335): Verifier rejected class Lcom/google/common/io/CharStreams; 05-08 12:16:41.163: DEBUG/AndroidRuntime(335): Shutting down VM 05-08 12:16:41.163: WARN/dalvikvm(335): threadid=3: thread exiting with uncaught exception (group=0x4001aa28) 05-08 12:16:41.173: ERROR/AndroidRuntime(335): Uncaught handler: thread main exiting due to uncaught exception 05-08 12:16:41.183: ERROR/AndroidRuntime(335): java.lang.VerifyError: com.google.common.io.CharStreams at com.triposo.droidguide.rometest.LocationStoreInstaller.install(LocationStoreInstaller.java:33) at com.triposo.droidguide.rometest.SplashActivity.onStart(SplashActivity.java:58) at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1205) at android.app.Activity.performStart(Activity.java:3520) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2373) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417) at android.app.ActivityThread.access$2100(ActivityThread.java:116) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:123) at android.app.ActivityThread.main(ActivityThread.java:4203) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:521) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549) at dalvik.system.NativeStart.main(Native Method) 

2 Solutions collect form web for “Uso de Google Guava con Android 1.6”

Me las arreglé para resolver esto al final. Si utilizo jarjar para cambiar el nombre de com.google.common.io.LineReader a otro nombre de paquete (por ejemplo, com.triposo.vendor.com.google.common.io.LineReader) funciona! Mi conjetura es que LineReader está incluido en Android, pero con una versión ligeramente diferente (incompatible).

Esta es la razón por la que el uso de las llamadas indocumentadas de la API de Android es malo. CharStreams nunca fue parte de la API de Android (no ves que su eliminación se menciona en el changelog 1.6 ).

Clases o métodos indocumentados podrían desaparecer sin previo aviso de cualquier revisión del SO, como sucedió aquí.

  • Android) java.lang.NoClassDefFoundError: com.google.android.gms.internal.zzno
  • Procese el comando sin iniciar MainActivity, en Android
  • No ver la interfaz de EditNameDialogListener
  • Dibuja parte de la imagen a la pantalla (sin cargar todo a la memoria)
  • Convertir una cadena en una clase
  • Retrasar la actividad de inicio del receptor en la pantalla apagada
  • Excepción de tiempo de ejecución de la biblioteca de persistencia de habitación al llamar al método Rooms inMemoryBuilder
  • ¿Solución anti-hack para una clave secreta en la aplicación para Android?
  • IOException: "El desafío de autenticación recibido es nulo" (Apache Harmony / Android)
  • Cómo identificar el móvil está inactivo?
  • Hilo saliendo con excepción no captada
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.