Xamarin Android ProGuard Habilitar
estoy trabajando en la aplicación xamarin. Cuando habilito "ProGuard" en las propiedades de android, mientras construyo la aplicación, estoy recibiendo el siguiente error:
"java.exe" exited with code1.
el archivo proguard cfg tiene lo siguiente:
- ObjectAnimator Proxy para animar TopMargin no puede encontrar setting / getter
- Cómo eliminar la flecha HomeAsUpButton de ActionBar Sherlock?
- Advertencias después de la actualización Xamarin Studio
- Xamarin AndroidManifest.xml es diferente al de Visual Studio
- Comprobar la versión de Xamarin.Android mediante programación
-keep public class * extends android.app.Activity -keep public class * extends android.app.Application -keep public class * extends android.app.Service
Desarrollo del medio ambiente:
Visual Studio 2015
Xamarin 4.0.4.4
- ¿Son las aplicaciones MonoDroid (Xamarin) menos propensas al robo?
- Xamarin apk en Blackberry (> = 10.2.1)
- Mono para Android: ¿dónde está GCMBaseIntentService?
- ¿Cómo usar la Facturación en la aplicación con MonoDroid?
- Xamarin Android: Compartir imagen a través de la API estándar (correo electrónico, facebook, etc.)
- "Esperando dispositivo" al depurar en el teléfono
- ¿Puedo obtener una devolución de llamada en la clase de aplicación siempre que se inicie una nueva actividad en toda la aplicación?
- Operador '! =' No se puede aplicar a los operandos de tipo 'Tarea' e 'int'
Tuve el mismo problema al habilitar ProGuard. Siguiendo el consejo en este acoplamiento , fijé el problema actualizando mi proguard manualmente. Los pasos son bastante fáciles de seguir y arreglaron el problema. Espero que esto te ayude.
- Descargue el archivo zip de ProGuard disponible en: https://sourceforge.net/projects/proguard/files/ . Al momento de escribir la última versión de ProGuard era 5.3.
- ProGuard no tiene un programa de instalación, por lo que tendrá que descomprimir el archivo y copiar la estructura de la carpeta proguard en la ubicación identificada en los pasos siguientes.
- Inicie el Administrador del SDK y anote la ruta en la parte superior izquierda de las opciones del menú. En mi caso esto era C: \ Users \ Sahar \ AppData \ Local \ Android \ android-sdk. La carpeta proguard se encuentra en la carpeta de herramientas de esta ruta (en mi caso, era C: \ Users \ Sahar \ AppData \ Local \ Android \ android-sdk \ tools \ proguard).
- Cierre todos los entornos de desarrollo que podrían estar accediendo al SDK y cambie el nombre de la carpeta proguard a proguard.old.
- Copie la carpeta proguard de la nueva versión en la carpeta de herramientas y cámbiela a proguard si es necesario (en mi caso, la carpeta copiada fue renombrada de proguard5.3).
- Finalmente, copie los archivos de configuración de la carpeta proguard.old a la nueva carpeta. En mi caso, éstos fueron: – proguard-android.txt, proguard-android-optimize.txt y proguard-project.txt.
- Limpie y reconstruya su proyecto con ProGuard habilitado.
Tuve un problema en el que Proguard eliminaba las bibliotecas de Google Play Services de mi aplicación.
Tuve que añadir las siguientes líneas de texto al archivo proguard-android.txt
que se encuentra en esta carpeta:
/(Path to your Android SDK Folder)/tools/proguard
-keep public class com.google.android.gms.* { public *; } -dontwarn com.google.android.gms.**
Archivo proguard-android.txt completo
-keep public class com.google.android.gms.* { public *; } -dontwarn com.google.android.gms.** # This is a configuration file for ProGuard. # http://proguard.sourceforge.net/index.html#manual/usage.html -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -verbose # Optimization is turned off by default. Dex does not like code run # through the ProGuard optimize and preverify steps (and performs some # of these optimizations on its own). -dontoptimize -dontpreverify # Note that if you want to enable optimization, you cannot just # include optimization flags in your own project configuration file; # instead you will need to point to the # "proguard-android-optimize.txt" file instead of this one from your # project.properties file. -keepattributes *Annotation* -keep public class com.google.vending.licensing.ILicensingService -keep public class com.android.vending.licensing.ILicensingService # For native methods, see http://proguard.sourceforge.net/manual/examples.html#native -keepclasseswithmembernames class * { native <methods>; } # keep setters in Views so that animations can still work. # see http://proguard.sourceforge.net/manual/examples.html#beans -keepclassmembers public class * extends android.view.View { void set*(***); *** get*(); } # We want to keep methods in Activity that could be used in the XML attribute onClick -keepclassmembers class * extends android.app.Activity { public void *(android.view.View); } # For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -keepclassmembers class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator CREATOR; } -keepclassmembers class **.R$* { public static <fields>; } # The support library contains references to newer platform versions. # Don't warn about those in case this app is linking against an older # platform version. We know about them, and they are safe. -dontwarn android.support.** # Understand the @Keep support annotation. -keep class android.support.annotation.Keep -keep @android.support.annotation.Keep class * {*;} -keepclasseswithmembers class * { @android.support.annotation.Keep <methods>; } -keepclasseswithmembers class * { @android.support.annotation.Keep <fields>; } -keepclasseswithmembers class * { @android.support.annotation.Keep <init>(...); }
- Cómo cambiar correctamente el nombre del paquete en AndroidManifest.xml (por ejemplo, en el proyecto zxing / barcodescanner)
- Cómo cambiar el color del divisor PreferenceCategory en PreferenceScreen