Crashlytics ProGuard duplicate zip entry
Estoy intentando ejecutar ProGuard en nuestra aplicación para Android. La aplicación genera y funciona bien sin ProGuard.
Cuando cambié build.gradle para tener "minifyEnabled verdadero" conseguí un montón de advertencias que pude eliminar con lo siguiente en proguard-rules.pro:
- Proguard.ParseException: Esperando el nombre del miembro de la clase antes de '@' en Android Eclipse ADT
- Eliminar localizaciones no utilizadas de APK
- EventBus y Proguard: No se pudo enviar el evento
- El significado de { *; } En ProGuard
- Servicios de Google Play con Proguard en Android Studio
-keep class org.joda.time.** { *; } -keep class javax.** { *; } -dontwarn okio.** -dontwarn javax.naming.** -dontwarn org.joda.convert.** -dontwarn org.bouncycastle.crypto.**
Ahora puedo obtener las siguientes advertencias y errores cuando intento crear usando ProGuard (editado para agregar mensajes de error):
Warning:can't write resource [META-INF/COM_CRAS.SF] (Duplicate zip entry [crashlytics-1.1.13.jar:META-INF/COM_CRAS.SF]) Warning:can't write resource [META-INF/COM_CRAS.RSA] (Duplicate zip entry [crashlytics-1.1.13.jar:META-INF/COM_CRAS.RSA]) Warning:can't write resource [META-INF/maven/com.squareup.okhttp/okhttp/pom.properties] (Duplicate zip entry [crashlytics-1.1.13.jar:META-INF/maven/com.squareup.okhttp/okhttp/pom.properties]) Warning:can't write resource [META-INF/maven/com.squareup.okhttp/okhttp/pom.xml] (Duplicate zip entry [crashlytics-1.1.13.jar:META-INF/maven/com.squareup.okhttp/okhttp/pom.xml]) Warning:can't write resource [META-INF/maven/com.squareup/otto/pom.properties] (Duplicate zip entry [crashlytics-1.1.13.jar:META-INF/maven/com.squareup/otto/pom.properties]) Warning:can't write resource [META-INF/maven/com.squareup/otto/pom.xml] (Duplicate zip entry [crashlytics-1.1.13.jar:META-INF/maven/com.squareup/otto/pom.xml]) Warning:can't write resource [META-INF/maven/com.squareup.okhttp/okhttp-protocols/pom.properties] (Duplicate zip entry [crashlytics-1.1.13.jar:META-INF/maven/com.squareup.okhttp/okhttp-protocols/pom.properties]) Warning:can't write resource [META-INF/maven/com.squareup.okhttp/okhttp-protocols/pom.xml] (Duplicate zip entry [crashlytics-1.1.13.jar:META-INF/maven/com.squareup.okhttp/okhttp-protocols/pom.xml]) Error:org.gradle.internal.UncheckedException: java.io.IOException: Can't write [/Users/dano/workspace/COMPANY_NAME/COMPANY_NAME-android/COMPANY_NAME-android/COMPANY_NAME/app/build/intermediates/classes-proguard/COMPANY_NAMELive/release/classes.jar] (Can't read [/Users/dano/.gradle/caches/modules-2/files-2.1/com.crashlytics.android/crashlytics/1.1.13/e821eafa1bf489a26bdb71f95078c26785b37a1/crashlytics-1.1.13.jar(;;;;;;!META-INF/MANIFEST.MF)] (Duplicate zip entry [com/a/a/ae.class == crashlytics-1.1.13.jar:com/crashlytics/android/a.class])) Error:java.io.IOException: Can't write [/Users/dano/workspace/COMPANY_NAME/COMPANY_NAME-android/COMPANY_NAME-android/COMPANY_NAME/app/build/intermediates/classes-proguard/COMPANY_NAMELive/release/classes.jar] (Can't read [/Users/dano/.gradle/caches/modules-2/files-2.1/com.crashlytics.android/crashlytics/1.1.13/e821eafa1bf489a26bdb71f95078c26785b37a1/crashlytics-1.1.13.jar(;;;;;;!META-INF/MANIFEST.MF)] (Duplicate zip entry [com/a/a/ae.class == crashlytics-1.1.13.jar:com/crashlytics/android/a.class])) Error:java.io.IOException: Can't read [/Users/dano/.gradle/caches/modules-2/files-2.1/com.crashlytics.android/crashlytics/1.1.13/e821eafa1bf489a26bdb71f95078c26785b37a1/crashlytics-1.1.13.jar(;;;;;;!META-INF/MANIFEST.MF)] (Duplicate zip entry [com/a/a/ae.class == crashlytics-1.1.13.jar:com/crashlytics/android/a.class]) Error:java.io.IOException: Duplicate zip entry [com/a/a/ae.class == crashlytics-1.1.13.jar:com/crashlytics/android/a.class]
He intentado lo siguiente, por varias otras consultas de SO:
En build.gradle:
packagingOptions { exclude 'META-INF/COM_CRAS.SF' exclude 'META-INF/COM_CRAS.RSA' exclude 'META-INF/maven/com.squareup.okhttp/okhttp/pom.properties' exclude 'META-INF/maven/com.squareup.okhttp/okhttp/pom.xml' exclude 'META-INF/maven/com.squareup/otto/pom.properties' exclude 'META-INF/maven/com.squareup/otto/pom.xml' exclude 'META-INF/maven/com.squareup.okhttp-protocols/okhttp-protocols/pom.properties' exclude 'META-INF/maven/com.squareup.okhttp-protocols/okhttp-protocols/pom.xml' }
y
compile 'com.crashlytics.android:crashlytics:1.+' { exclude group: 'com.squareup.okhttp', module: 'okhttp' }
En proguard-rules.pro:
-keepattributes *Annotation*,Signature
Y una variedad de
-keep class <crashlytics | squareup | other> -dontwarn <crashlytics | squareup | other>
Todavía tengo los mismos 4 errores y 8 advertencias.
Estoy convencido de que esto es algo bastante simple (y probablemente estúpido) que estoy haciendo mal, pero no he sido capaz de encontrar nada que avance la construcción.
Todas y cada una de las sugerencias serán (A) probadas y (B) apreciadas.
- Configuración de Google Play Services v23 Proguard
- Proguard de Android: cómo mantener controladores onClick sólo referenciados desde diseños XML
- Android cómo colocar todas mis clases en un solo paquete usando Proguard
- ¿Cómo generar proguard-android.txt automáticamente?
- ¿Cómo usar proguard.jar personalizado en la compilación de Gradle?
- ProGuard - org.codehaus.jackson.map.JsonMappingException: No se encontró ningún constructor adecuado para el tipo
- NoClassDefFoundError al usar proguard
- Android: Cómo quitar el registro de depuración de SLF4J con ProGuard
- Memoria de Android y cliente de caché de caché http utilizando Picasso
- Android: Picasso no carga algunas imágenes