Я разрабатываю приложения для Android и использую Proguard для обфускации кода.
В настоящее время я использую конфигурации ProGuard:
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-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.android.vending.licensing.ILicensingService
Чтобы сохранить имена пользовательских компонентов, которые используются в макетах XML:
-keep public class custom.components.**
Чтобы удалить журналы отладки:
-assumenosideeffects class android.util.Log {
public static *** d(...);
public static *** v(...);
}
Чтобы избежать изменения имен методов, вызванных в макете onClick:
-keepclassmembers class * {
public void onClickButton1(android.view.View);
public void onClickButton2(android.view.View);
public void onClickButton3(android.view.View);
}
-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 enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
Вопрос (есть):
Рекомендуются ли какие-либо другие теги? Зачем и зачем?
Можно ли прокомментировать файл proguard.cfg? Я хотел бы иметь его с комментариями, что некоторые строки делают, чтобы другие разработчики не сомневались в том, почему я добавил.
Также в proguard можно сохранить заголовок комментария файла (с авторским правом)? Если это не так, или это не хорошая политика, где я должен добавить авторские права?