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

  • ¿Cómo puedo obtener el contexto de la aplicación de un servicio de Android?
  • ¿Algún problema o problema significativo con la Biblioteca de Databinding de Android?
  • La aplicación de Android se bloquea después de integrar React Native con NoClassDefFoundError: com.facebook.react.bridge.JSPackagerWebSocketClient
  • Obtener el nombre del método del llamador de mi método
  • Utilizando RxJava para la validación de inicio de sesión de correo electrónico, un observable está emitiendo dos veces
  • ¿Cuál es el propósito de las categorías de intención?
  • Inicializar la variable final dentro del constructor en otro método
  • Ejemplo de enlace de datos de 2 vías de android no funcionan como se describe
  • Android: Instalación de Wikitude en el emulador de Android
  • Cómo analizar este tipo de json String con Gson?
  • Java.lang.IllegalStateException: ArrayAdapter requiere que el identificador de recurso sea un TextView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.