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 релиза правила не применяются

Leave a Reply

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.