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
:
- ¿Cómo hacer que Proguard ignore las bibliotecas externas?
- ¿Garantiza Proguard para proporcionar el mismo mapeo si no ha cambiado ninguna fuente?
- Proguard, clase de biblioteca depende de la clase del programa
- AppCompat V7 falla al usar shrinkResources
- ¿Cómo encripta DexGuard las clases?
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?
- Android - Maven Build - Proguard - no puede encontrar la clase referenciada
- Android, Scala y Proguard
- Proguard dice que el archivo jar de entrada se especifica dos veces
- cómo escribir una configuración proguard para una lib de servicio remoto
- Proguard dando "Warning: org.msgpack. *"
- Conflicto entre la vinculación de datos de Android y la guayaba provoca error en ProGuard
- Aplicación de bloqueo de Android después de proguard
- Proguard rompe el archivo de audio en activos o en bruto
Si no está utilizando la función JSONStore, puede excluir de forma segura lo siguiente:
- Guayaba
- Commons-codec.jar
- Jackson
- "Android: dropDownAnchor" no funciona en Android Nougat (API 24)
- Pasar la posición en el ListView al niño RecyclerView Adapter