Java Proguard不';t在Android中隐藏类和文件夹名称
我有一个Android应用程序,我想用ProGuard混淆它 过了一段时间,我终于设法使它与我正在使用的所有外部库一起工作。我使用gradle为发布版本配置ProGuardJava 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
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