Java Proguard不';t在Android中隐藏类和文件夹名称

Java Proguard不';t在Android中隐藏类和文件夹名称,java,android,class,proguard,Java,Android,Class,Proguard,我有一个Android应用程序,我想用ProGuard混淆它 过了一段时间,我终于设法使它与我正在使用的所有外部库一起工作。我使用gradle为发布版本配置ProGuard buildTypes { release { signingConfig signingConfigs.release minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.t

我有一个Android应用程序,我想用ProGuard混淆它

过了一段时间,我终于设法使它与我正在使用的所有外部库一起工作。我使用gradle为发布版本配置ProGuard

buildTypes {
    release {
        signingConfig signingConfigs.release
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    } 
但是有一个问题

我正在用Smali2Java测试我的模糊代码,如果没有模糊,它可以很好地读取代码和方法,当它模糊时,您只能看到变量和导入问题是,您还可以看到类名和文件夹。对我来说,隐藏它们非常重要,这样用户就看不到这样的项目结构和代码:

public class DtosToPrintRequestsMapper {
    private final TransactionLineCreator a;
    private final ProtocolDiscountCreator b;
    private final ProtocolPaymentCreator c;
}
我不希望用户能够看到这些东西。以及我的项目中的文件夹结构。

以下是我的程序规则:

# Add project specific ProGuard rules here.
# For more details, see
#   http://developer.android.com/guide/developing/tools/proguard.html

# Add any project specific keep options here:

# ignore warnings
-dontwarn com.google.common.**
-dontwarn com.octo.**
-dontwarn com.squareup.javawriter.**
-dontwarn okio.**

# Butterknife
-dontwarn butterknife.internal.**
-keep class **$$ViewInjector { *; }
-keepnames class * { @butterknife.InjectView *;}

# Dagger
-dontwarn dagger.**
-keepclassmembers,allowobfuscation class * {
    @javax.inject.* *;
    @dagger.* *;
    <init>();
}
-keep class dagger.* { *; }
-keep class javax.inject.* { *; }
-keep class * extends dagger.internal.Binding
-keep class * extends dagger.internal.ModuleAdapter
-keep class * extends dagger.internal.StaticInjection
-keep class * extends dagger.internal.BindingsGroup

-keep class com.someapp.waiterapp.infrastructure.someappModule
-keep class com.someapp.waiterapp.infrastructure.AndroidModule
-keep class com.someapp.waiterapp.infrastructure.RootModule
-keep class dagger.Lazy

# Retrofit, OkHttp, Gson
-dontwarn retrofit.**
-keepattributes *Annotation*
-keepattributes Signature
-keep class com.squareup.okhttp.** { *; }
-keep interface com.squareup.okhttp.** { *; }

-keepattributes Exceptions
-keep class retrofit.** { *; }
-keepclasseswithmembers class * {
    @retrofit.http.* <methods>;
}
-keep class com.someapp.waiterapp.lib.api.contract.** { *; }
-keepclassmembernames interface * {
    @retrofit.http.* <methods>;
}
-keep class sun.misc.Unsafe { *; }

# Otto
-keepattributes *Annotation*
-keepclassmembers class ** {
    @com.squareup.otto.Subscribe public *;
    @com.squareup.otto.Produce public *;
}

但是没有结果

如果您有什么想法,我可以将这些类和文件夹名称重命名为典型的a/b/c/d,非常感谢您的帮助

keepnames class * { @butterknife.InjectView *;}
keep class * { @butterknife.InjectView *;}
keepclassmembernames interface 
keepclassmembers interface