Obfuscate Android Application(APK) file/ Обфускация Android APK – файла
Начнем с главного – выбор IDE никак не зависит на процесс обфускации, что в Android Studio, что в Eclipse. В случае с Eclipse, в файле project.properties указываем путь к файлу правил обфускации. Для Android studio все правила прописываются в файле proguard-rules.pro
-dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -dontwarn android.support.** -verbose -dontoptimize -dontpreverify -keepattributes *Annotation* -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 * extends android.view.View -keep public class com.google.vending.licensing.ILicensingService -keep public class com.android.vending.licensing.ILicensingService -keep public class * extends android.support.v4.app.Fragment -keep public class * extends android.app.Fragment -keepclassmembers class * implements java.io.Serializable { static final long serialVersionUID; private static final java.io.ObjectStreamField[] serialPersistentFields; !static !transient <fields>; private void writeObject(java.io.ObjectOutputStream); private void readObject(java.io.ObjectInputStream); java.lang.Object writeReplace(); java.lang.Object readResolve(); } -dontwarn com.google.android.glass.** -dontwarn org.codehaus.jackson.map.** -dontwarn com.google.android.gms.** -dontwarn com.google.common.annotations.** -dontwarn com.google.common.cache.** -dontwarn com.google.common.primitives.** -dontwarn android.content.** -dontwarn android.graphics.drawable.** -dontwarn android.util.Xml.** -dontwarn android.view.LayoutInflater.** -dontwarn org.xmlpull.v1.** -keepclasseswithmembernames class * { native <methods>; } -keepclasseswithmembernames class * { public <init>(android.content.Context, android.util.AttributeSet); } -keepclasseswithmembernames class * { public <init>(android.content.Context, android.util.AttributeSet, int); } -keepclassmembers public class * extends android.view.View { void set*(***); *** get*(); } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } -keepclassmembers class **.R$* { public static <fields>; }
И напоследок не забываем, что обфускация применима к генерации/экспорту подписанного APK файла. Для сборки APK-debug релиза правила не применяются