Voglio usare Proguard per offuscare il codice di un'app. Non ho bisogno di ottimizzazioni e non ho bisogno di Proguard per rimuovere qualsiasi classe o metodo. Tutto quello che voglio è l'offuscamento. L'app utilizza diversi progetti di libreria.Android & Proguard - come nascondere, ma non ottimizzare alcun codice?
Ho sbattuto la testa contro il muro cercando di farlo accadere e non funziona come voglio io. Quando eseguo, vedo NoSuchMethodExceptions lanciate nell'app, anche se pensavo di aver disattivato le opzioni di riduzione di Proguard.
Quali sono le impostazioni magiche per cui Proguard JUST può offuscare e non ottimizzare via NESSUN codice?
AGGIORNAMENTO. Ho confermato per tentativi ed errori che è il processo di offuscamento (non l'ottimizzazione o il restringimento) che sta causando 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.**
Se non sai come offuscare senza ottimizzazione, come si può sapere che il la fase di ottimizzazione è il problema? – for3st