Dependencias de IBM MobileFirst 7

Estoy utilizando la biblioteca de MobileFirst 7 para una aplicación nativa de Android, pero he encontrado que aumenta gravemente el recuento de métodos dex de mi aplicación de Android (empujándola por encima del límite de 65.536 ).

Al agregar el SDK de IBM MobileFirst Platform Foundation a una aplicación nueva o existente con el artículo de Android Studio , agregué lo siguiente a mi build.gradle :

 compile group: 'com.ibm.mobile.foundation', name: 'ibmmobilefirstplatformfoundation', version: '7.1.0.0', ext: 'aar', transitive: true 

De acuerdo con methodscount.com , la biblioteca MobileFirst (y sus dependencias) obtiene 39.364 métodos (60% de la cantidad de métodos disponibles).

Pensé que Proguard podría ayudar a reducir el impacto de usar MobileFirst, pero encontró que el ejemplo proguard-project.txt tiene la siguiente directiva:

 -keep class com.google.** { *;} 

Según lo entiendo, esto efectivamente le dice a Proguard que no quite ninguno de los métodos de Google Guava . Hay otras bibliotecas que MobileFirst tira, pero empecé con la guayaba porque era la más grande.

Entonces decidí mirar en cuánto MobileFirst utilizó la biblioteca de Guava:

 $ unzip ibmmobilefirstplatformfoundation-7.1.0.aar $ jadx --output-dir temp/ classes.jar $ grep -roh . -e 'com.google.common.*' | sort | uniq 

¿Qué encontró cero referencias a cualquiera de la biblioteca de Guava (concedió el descompilador puede faltar algunas de las referencias), pero parece que la dependencia de la guayaba puede ser excluido?

 compile(group: 'com.ibm.mobile.foundation', name: 'ibmmobilefirstplatformfoundation', version: '7.1.0.0', ext: 'aar', transitive: true) { exclude group: 'com.google.guava', module: 'guava' } 

Si ese no es el caso (y excluyendo la guayaba sería un problema) entonces:

  • ¿Hay mejores reglas Proguard que se pueden usar para mantener sólo los métodos que son necesarios en las dependencias de MobileFirst?
  • ¿Pueden también excluirse otras grandes bibliotecas de las que depende MobileFirst?

Si no está utilizando la función JSONStore, puede excluir de forma segura lo siguiente:

  • Guayaba
  • Commons-codec.jar
  • Jackson
  • Android Proguard - IllegalArgumentException en la clase TypeReference de Jackson
  • Org.apache.commons.collections.BeanMap: no se puede encontrar la clase referenciada java.beans.Introspector
  • Proguard elimina el código no utilizado (en Android)
  • Proguard con el proyecto android utilizando bibliotecas (de compatibilidad)
  • Copia automática de Android Proguard mapping Android Studio
  • Cómo proteger la llamada a webservice en Android
  • Usando jsoup con fuerza de cierre proguard cerrar
  • ¿Qué hace ciertas clases de android "debe-mantener"?
  • Android: Proguard no compiló con el archivo jar de Joda Time
  • Obtener advertencias con Proguard (con bibliotecas externas)
  • Error: Error de ejecución para la tarea ': app: packageRelease'. > Java.io.IOException: No se pudo leer el archivo zip
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.