为什么混淆器只混淆了 class 而没有扩展任何东西

why proguard is only obfuscating the class which is not extending anything

我正在尝试使用混淆器混淆我的 android 应用程序。但问题是,当我反编译 apk 时,它只显示更改的变量名称,但 class 名称与 source.Only 中的名称相同,一个 class 的名称已更改,这并没有扩展任何其他 class.I 已经搜索了很多选项但没有任何效果所以我在这里发布我的问题。

这是我的 gradle 文件代码:-

 buildTypes {
    release {

        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'),
                'proguard-rules.pro'
    }
}

在我的混淆器 rules.pro 文件中

-ignorewarnings

请帮我解决这个问题 谢谢:)

我不知道你的情况到底是什么问题,但我已经通过以下 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

使用此规则

它会改变混淆 class 以及你的 instance

-ignorewarnings

-keep class * {
    public private default *;
}

Note: Don't forget to check your all functionalities after applying changes in proguard-ruls.pro file

proguard-ruls.pro 文件中应用更改后,可能有一些 class 将不起作用,在这种情况下,您必须使用 -keep 来避免此问题

-keep 指定 classes 和 class 成员(字段和方法)保留为代码的入口点。例如,为了保留应用程序,您可以指定 main class 及其 main 方法。

您也可以应用此规则

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