我试图用proguard来模糊我的android应用程序。但问题是当我反编译apk时它只显示已更改的变量名,但类名与源中的相同。只有一个类的名称被更改,这不会扩展任何其他类。我搜索了很多选项但没有任何效果,所以我在这里发布我的问题。
这是我的gradle文件代码: -
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
和我的proguard rules.pro文件
-ignorewarnings
请帮我解决这个问题 感谢:)
答案 0 :(得分:3)
我不知道你的情况究竟是什么问题,但是我已经通过 proguard rules
解决了我的问题,并且它们有各种规则可以帮助你保护你的应用程序
-dontskipnonpubliclibraryclassmembers
-dontshrink
-dontoptimize
-printmapping build/libs/output/obfuscation.map
-keepattributes
-adaptclassstrings
-dontnote
-dontwarn
# Keep Android classes
-keep class ** extends android.** {
<fields>;
<methods>;
}
# Keep serializable classes & fields
-keep class ** extends java.io.Serializable {
<fields>;
}
# Keep - Applications. Keep all application classes, along with their 'main'
# methods.
-keepclasseswithmembers public class * {
public static void main(java.lang.String[]);
}
# Also keep - Enumerations. Keep the special static methods that are required in
# enumeration classes.
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-assumenosideeffects class android.util.Log {
public static *** d(...);
public static *** e(...);
public static *** w(...);
}
如需了解更多信息,请访问Proguard official site
答案 1 :(得分:1)
使用此规则
它会改变对class
以及instance
-ignorewarnings
-keep class * {
public private default *;
}
注意:在
中应用更改后,请不要忘记检查所有功能proguard-ruls.pro
文件
在class
文件中应用更改后,可能会有一些proguard-ruls.pro
无效,在这种情况下,您必须使用-keep
来避免此问题
-keep 指定要保留为代码入口点的类和类成员(字段和方法)。例如,为了保留应用程序,您可以指定主类及其主要方法。
您也可以应用此规则
ignorewarnings
-dontpreverify
-repackageclasses ''
-allowaccessmodification
-optimizations !code/simplification/arithmetic
-keepattributes *Annotation*
-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.v7.widget.SearchView { *; }
-assumenosideeffects class android.util.Log {
public static *** d(...);
public static *** e(...);
public static *** w(...);
}
有关proguard-rules
的更多信息,请参阅官方proguard DOC