Android 为什么proguard只是混淆了没有扩展任何内容的类

Android 为什么proguard只是混淆了没有扩展任何内容的类,android,security,android-proguard,Android,Security,Android Proguard,我试图用proguard混淆我的android应用程序。但问题是,当我反编译apk时,它只显示更改的变量名,但类名与源代码中的类名相同。只更改了一个类的名称,这不会扩展任何其他类。我搜索了许多选项,但没有任何效果,因此我将问题发布在这里 这是我的gradle文件代码:- buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-and

我试图用proguard混淆我的android应用程序。但问题是,当我反编译apk时,它只显示更改的变量名,但类名与源代码中的类名相同。只更改了一个类的名称,这不会扩展任何其他类。我搜索了许多选项,但没有任何效果,因此我将问题发布在这里

这是我的gradle文件代码:-

 buildTypes {
    release {

        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'),
                'proguard-rules.pro'
    }
}
在我的proguard rules.pro文件中

-ignorewarnings
请帮我做这个
谢谢:)

我不知道您的情况下到底出现了什么问题,但我已经通过下面的
proguard规则解决了我的问题,它们是帮助您保护应用程序的各种规则

-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(...);
}
-dontskipnonpubliclibraryclassmembers
-dontshrink
-dontoptimize
-printmapping build/libs/output/obfuscation.map
-记述
-自适应类字符串
-dontnote
-唐特沃恩
#保留Android类
-保持类**扩展android。**{
;
;
}
#保持可序列化的类和字段
-保持类**扩展java.io.Serializable{
;
}
#保留应用程序。保留所有应用程序类及其“main”
#方法。
-keepclassswithmembers公共类*{
公共静态void main(java.lang.String[]);
}
#还保留-枚举。保留中所需的特殊静态方法
#枚举类。
-keepclassmembers枚举*{
公共静态**[]值();
公共静态**valueOf(java.lang.String);
}
-assumenosideeffects类android.util.Log{
公共静态***d(…);
公共静态***e(…);
公共静态***w(…);
}

有关更多信息,请访问

使用此规则

它将改变混淆
以及
实例

-ignorewarnings

-keep class * {
    public private default *;
}
注意:
proguard ruls.pro
文件中应用更改后,不要忘记检查所有功能

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(...);
}
忽略警告
-不要翻转
-重新打包类“”
-允许访问修改
-优化!代码/简化/算术
-keepattributes*注释*
-keepclassswithmembers类*{
public(android.content.Context、android.util.AttributeSet);
}
-keepclassswithmembers类*{
public(android.content.Context,android.util.AttributeSet,int);
}
-keepclassmembers类*实现android.os.Parcelable{
静态android.os.Parcelable$Creator;
}
-keepclassmembers类**.R$*{
公共静态;
}
-保持类android.support.v7.widget.SearchView{*;}
-assumenosideeffects类android.util.Log{
公共静态***d(…);
公共静态***e(…);
公共静态***w(…);
}

有关
proguard规则的更多信息
您可以参考官方使用的但类名仍然存在请尝试我的规则。。。。。