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) 

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í.

  • ¿Cómo hacer clic en los elementos de la barra de acción al realizar pruebas con Android Espresso?
  • Obtener referencia a Thread Object desde su ID
  • Receptor de radiodifusión. Datos enormes
  • Cómo codificar una cadena con Base64 en Android?
  • Retrofit post utilizando Firebase
  • Guardar vista como mapa de bits, sólo obtener pantalla en negro
  • No se puede resolver el símbolo KeyEvent
  • MojoExecutionException: Maven con Android
  • Ejemplo de enlace de datos de 2 vías de android no funcionan como se describe
  • ¿Cómo autenticar la solicitud de POST de usuario de Android con Django REST API?
  • Dibujar línea discontinua en Android mediante programación
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.