防止目录被混淆

Posted

技术标签:

【中文标题】防止目录被混淆【英文标题】:Prevent a directory from proguard obfuscation 【发布时间】:2018-05-10 10:34:46 【问题描述】:

我浏览过几篇关于 proguard 混淆的 *** 帖子

How to keep/exclude a particular package path when using proguard?

How to make Proguard ignore external libraries?

How to exclude specific jars from injars during obfuscation using proguard?

但我没有找到排除特定目录以防止混淆的答案。

目录结构:

libs 
      => lib1
               => a.b.c.package
                            A.java
                            B.java
      => lib2
               => d.e.f.package
                            C.java
                            D.java
      => lib3
              => g.h.i.package 
                            E.java
                            F.java

我不想在 -keep 选项中为每个包名称添加多行,而是想从混淆中排除整个 libs 包。

有什么方法可以阻止对特定目录 libs 的混淆,如下所示?

有没有办法从混淆中排除 java 运行时类?

【问题讨论】:

【参考方案1】:

在 proguard-rules.pro 文件的顶部添加以下行:

-keeppackagenames your.complete.packagename

【讨论】:

【参考方案2】:

如果您的意思是目录是包,那么在 proguard-rules.pro 中添加以下行:

-keep class com.example.something.packageName.**  *; 

【讨论】:

我在根目录下有很多子目录(比如 libs),实际的包名从子目录开始

以上是关于防止目录被混淆的主要内容,如果未能解决你的问题,请参考以下文章

切换到 Gradle:为啥我必须防止自定义视图被混淆?

Gson 防止被混淆

如何防止 Dexguard 混淆 android studio 中的资源文件夹?

android混淆代码

java防止反编译之proguard混淆代码

IDA学习笔记-代码混淆和软件保护方法