【问题标题】:Obfuscate the folder structure - Android混淆文件夹结构 - Android
【发布时间】:2015-03-23 00:45:37
【问题描述】:

我正在开发一个安卓应用程序。我使用 progaurd 混淆了项目的代码。我也想混淆文件夹结构。无论如何要这样做?

感谢您的帮助

【问题讨论】:

  • 你指的是什么“文件夹结构”?
  • 我指的是“包名”

标签: android proguard


【解决方案1】:

ProGuard 包含various directives,用于您的 ProGuard 规则文件,可以混淆包名称,例如 -flattenpackagehierarchy-repackageclasses。只需确保从 AndroidManifest.xml 引用或以其他方式通过反射访问的任何内容都保持不变。

可以想象,商业化的、Android 调优的DexGuard 工具甚至可以让你重新打包清单中的东西(通过修改清单条目作为混淆过程的一部分),但我不知道它是否这样做.

【讨论】:

    【解决方案2】:

    将此代码复制并粘贴到 proguard.cfg 中:

    -dontusemixedcaseclassnames
    -dontskipnonpubliclibraryclasses
    -verbose
    -dontoptimize
    -dontpreverify
    -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.app.backup.BackupAgent
    -keep public class * extends android.preference.Preference
    -keep public class * extends android.support.v4.app.Fragment
    -keep public class * extends android.support.v7.app.ActionBarActivity
    -keep public class * extends android.app.Fragment
    -keep public class com.android.vending.licensing.ILicensingService
    -keepclasseswithmembernames class * {
       native <methods>;
     }
    -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 * extends android.app.Activity {
    public void *(android.view.View);
    }
    
    -keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
    }
    
     -keep class * implements android.os.Parcelable {
     public static final android.os.Parcelable$Creator *;
    }
    
    -keepclassmembers class **.R$* {
    public static <fields>;
    }
    -dontwarn android.support.**
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-15
      • 1970-01-01
      • 2012-03-25
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 2012-02-10
      • 1970-01-01
      相关资源
      最近更新 更多