FileNotFoundException en el archivo proguard-rules.pro
Estoy usando Android Studio v.1.0 Mi archivo de construcción:
buildTypes { debug { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }
Pero cuando intento hacer una compilación de la liberación, consigo un error: Error: La ejecución falló para la tarea ': app: proguardRelease'.
- Excluir paquetes de proguard
- Problema Proguard para la biblioteca mupdf
- No se puede obtener jar biblioteca para trabajar con Android y Proguard
- EventBus y Proguard: No se pudo enviar el evento
- ¿Por qué Proguard mantiene la clase de actividad en Android?
Java.io.FileNotFoundException: F: …. \ app \ proguard-rules.pro (archivo no encontrado)
Creo que proguard-android.txt es una parte de SDK de Android, ¿no?
¿Y por qué Android Studio no puede encontrarlo?
También intenté proguard-android.pro – el mismo resultado
- El significado de { *; } En ProGuard
- ProGuard con Android: java.lang.NoSuchMethodError: android.util.Xml.asAttributeSet
- ¿Cómo hacer que Proguard ignore las bibliotecas externas?
- Reducir la biblioteca de Google Play Services para usarla únicamente con Google Analytics
- ¿Cómo obfuscate el proyecto con Dagger 2.0 usando Proguard?
- Al ofuscar con ProGuard, ¿hace -keepattributes SourceFile, LineNumberTable hacer el apk resultante más fácil de ingeniería inversa?
- Android form build: proguard no puede encontrar el método de referencia en la clase ViewConfigurationCompatFroyo
- Uso de Proguard para eliminar clases no utilizadas en la biblioteca de Servicios de Google Play
Si no necesita ninguna configuración específica de ProGuard:
buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt') } }
(La advertencia pudo haber ocurrido)
O especificar "reglas" y ponerlo aquí:
.../app/proguard-rules.pro
Por ejemplo, uso "Butter Knife" y mi proguard-rules.pro se parece a:
-keep class butterknife.** { *; } -dontwarn butterknife.internal.** -keep class **$$ViewInjector { *; } -keepclasseswithmembernames class * { @butterknife.* <fields>; } -keepclasseswithmembernames class * { @butterknife.* <methods>; }
O, posiblemente, puede dejar build.gradle archivo como es (si no te gusta las advertencias)), Y acaba de poner un vacío proguard-rules.pro a esa ubicación.
He creado mi propio archivo proguard-android.pro y funciona correctamente para mí:
-dontwarn org.apache.commons.** -dontwarn com.google.** -dontwarn com.j256.ormlite** -dontwarn org.apache.http** -keepattributes SourceFile,LineNumberTable -keep class com.j256.** -keepclassmembers class com.j256.** { *; } -keep enum com.j256.** -keepclassmembers enum com.j256.** { *; } -keep interface com.j256.** -keepclassmembers interface com.j256.** { *; } -keepattributes Signature # GSON Library # For using GSON @Expose annotation -keepattributes *Annotation* # Gson specific classes -keep class sun.misc.Unsafe { *; } #-keep class com.google.gson.stream.** { *; } # Application classes that will be serialized/deserialized over Gson -keep class com.google.gson.examples.android.model.** { *; } # Google Map -keep class com.google.android.gms.maps.** { *; } -keep interface com.google.android.gms.maps.** { *; }
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
La siguiente línea en el archivo build.gradle de su módulo de aplicación indica que la secuencia de comandos de proguard debe aplicarse a su versión de lanzamiento. Tiene dos archivos:
-
proguard-android.txt
: es el archivo proguard predeterminado de android, que se puede encontrar en el directorio D: \ SDK \ tools \ proguard de SDK. - 'Proguard-rules.pro': contiene su script proguard específico de la aplicación. Necesita crear este archivo en la carpeta raíz de su aplicación. Toda su aplicación específica proguard debe estar dentro de este archivo.
Compruebe por favor su "proguard-rules.pro" dentro de su carpeta del proyecto de la raíz. I su proyecto exportado desde eclipse debe crear 'proguard-rules.pro' dentro de la carpeta del proyecto raíz.
Una solución es descargar uno de los siguientes:
http://dl.google.com/android/android-sdk_r22.6.2-linux.tgz http://dl.google.com/android/android-sdk_r22.6.2-windows.zip http://dl.google.com/android/android-sdk_r22.6.2-macosx.zip
Y copie los siguientes archivos:
tools/hprof-conv tools/support/annotations.jar tools/proguard
- Google Analytics con Android: ¿Configurar programaticamente ga_reportUncaughtExceptions?
- ¿Cómo crear un servicio de fondo siempre en ejecución?