首页 > 解决方案 > Proguard :- 混淆文件夹名称

问题描述

我想在发布 apk 后混淆我项目的所有文件夹名称。

我见过很多相关的问题,但没有一个有效。我已经尝试过-flattenpackagehierarchy 'myobfuscated',但它会创建另一个 myobfuscate 文件,而不是重命名所有文件夹和类。我也用过-repackageclasses '',但找不到解决办法。请帮我。

proguard.pro 文件看起来像:-

-ignorewarnings
-dontpreverify
-allowaccessmodification
-optimizations !code/simplification/arithmetic
-keepattributes *Annotation*

-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application  
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider

-keep public class * extends android.view.View {
public <init>(android.content.Context);
public <init>(android.content.Context, android.util.AttributeSet);
public <init>(android.content.Context, android.util.AttributeSet, int);
public void set*(...);
}

-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 public class * extends android.support.v4.app.Fragment
 -keep public class * extends android.app.Fragment

 -keepnames class * implements java.io.Serializable 

 -keepclassmembers class * implements java.io.Serializable {
  static final long serialVersionUID;
private static final java.io.ObjectStreamField[] serialPersistentFields;
!static !transient <fields>;
!private <fields>;
!private <methods>;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
   }

    -assumenosideeffects class android.util.Log {
public static *** e(...);
public static *** w(...);
public static *** wtf(...);
public static *** d(...);
public static *** v(...);
  }

 -keepclasseswithmembernames class * {
native <methods>;
 }
   -keepclassmembers class * {
public void *onClick(android.view.View);
       }

  -keep class org.xmlpull.v1.** { *;}
   -dontwarn org.xmlpull.v1.**

 -keep public class * implements com.bumptech.glide.module.GlideModule
  -keep public class * extends com.bumptech.glide.module.AppGlideModule
   -keep public enum com.bumptech.glide.load.ImageHeaderParser$** {
   **[] $VALUES;
   public *;
   }

-keepclassmembers class javax.xml.bind.DatatypeConverter { *; }
  -keepclasseswithmembers class DatatypeConverter {
  public static *;
  }
  -keep class javax.xml.** { *; }
  -keep interface javax.xml.** { *; }
  -keep class org.apache.xerces.** { *; }
  -keep interface org.apache.xerces.** { *; }

我想用文件夹混淆这些类

标签: androidproguardobfuscation

解决方案


很可能您的其他-keep属性正在阻止包名称被混淆。

对于验证,注释-keep规则并运行 proguard。

谢谢


推荐阅读