Quiero usar Proguard para ofuscar el código de una aplicación. No necesito optimizaciones, y no necesito que Proguard retire todas las clases o métodos. Todo lo que quiero es ofuscación. La aplicación utiliza varios proyectos de biblioteca.Android y Proguard: ¿cómo ofuscar, pero no optimizar ningún código?
He estado golpeando mi cabeza contra la pared tratando de hacerlo realidad y no está funcionando como yo quiero. Estoy viendo que NoSuchMethodExceptions se lanzó en la aplicación cuando se ejecutó, aunque pensé que había desactivado las opciones de reducción de Proguard.
¿Cuáles son las configuraciones mágicas para que Proguard JUST se ofusque y no optimice CUALQUIER código?
ACTUALIZACIÓN. He confirmado a través de prueba y error que es el proceso de ofuscación (no la optimización o la reducción) lo que está causando las NoSuchMethodExceptions.
Proguard.cfg
-dontpreverify
-repackageclasses ''
-allowaccessmodification
-optimizations !code/simplification/arithmetic
-keepattributes *Annotation*
-dontshrink
-keep public class * extends Object
-keep class com.myapp.** { *; }
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class com.myapp.activity.Splash
-keep public class com.myapp.alarm.AlarmsViewer
-keep public class com.myapp.activity.About
-keep public class com.myapp.activity.Base
-keep public class com.myapp.activity.BaseWithMenu
-keep public class com.myapp.alarm.Alarm
-keep public class com.myapp.alarm.AlarmFragment
-keep public class com.myapp.alarm.AlarmPagerAdapter
-keep public class com.myapp.alarm.AlarmStore
-keep public class com.myapp.app.App
-keep public class com.myapp.preferences.Preferences
-keep public class com.myapp.preferences.PreferencesStore
-keep public class * extends android.view.View {
public <init>(android.content.Context);
public <init>(android.content.Context, android.util.AttributeSet);
public <init>(android.content.Context, android.util.AttributeSet, int);
public void set*(...);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers class * implements android.os.Parcelable {
static android.os.Parcelable$Creator CREATOR;
}
-keepclassmembers class **.R$* {
public static <fields>;
}
-keep class android.support.v4.app.** { *; }
-keep interface android.support.v4.app.** { *; }
-keep class com.actionbarsherlock.** { *; }
-keep interface com.actionbarsherlock.** { *; }
-keepattributes *Annotation*
-keep public interface com.android.vending.licensing.ILicensingService
-dontwarn android.support.**
Si usted no sabe cómo ofuscar sin optimización, ¿cómo se puede saber que el paso de optimización es el problema? – for3st