为什么 ProGuard 不从与我配置的相同包中的类重新打包以防止混淆?

问题描述

我正在使用 com.github.wvengen:proguard-maven-plugin:2.3.1 maven 插件在构建我的项目时混淆我的 jars。除了混淆之外,我还尝试将所有类重新打包到根包中。一切正常,所有类都移到根包中,直到我不得不配置防止类混淆。来自与我试图防止混淆的类相同的包中的类不会移动到根包。我正在使用的配置:

<configuration>
  <proguardVersion>7.0.0</proguardVersion>
  <injar>${project.build.finalName}.jar</injar>
  <outjar>${project.build.finalName}-obf.jar</outjar>
  <obfuscate>true</obfuscate>
  <mappingFileName>mapping.txt</mappingFileName>
  <seedFileName>seeds.txt</seedFileName>
  <options>
    <option>-dontoptimize</option>
    <option>-dontshrink</option>
    <option>-dontnote **</option>
    <option>-dontwarn **</option>
    <option>-repackageclasses</option>
    <option>-keep class me.myname.mypkg.Main</option>
  </options>
  <libs>
    <lib>${java.home}/lib/rt.jar</lib>
  </libs>
</configuration>

假设我有以下未混淆的 jar:

├─com
│ └─somename
│   └─somepkg
│     ├─otherpkg
│     │ └─OtherClass.class
│     └─SomeClass.class
└─me
  └─myname
    └─mypkg
      ├─util
      │ └─Util.class
      ├─Main.class
      ├─Manager.class
      └─MyApp.class

当使用上面的配置通过 ProGuard (7.0.0) 时,我得到以下输出 jar:

├─me
│ └─myname
│   └─mypkg
│     ├─a.class     # - MyApp.class
│     ├─A.class     # - Manager.class
│     └─Main.class
├─a.class           # - OtherClass.class
├─A.class           # - SomeClass.class
└─b.class           # - Util.class

看看 Main.class 包的类是如何不被移动到根包的?此行为发生在官方 proguard 和 maven 插件上。这是故意的吗?如果是这样,即使我保持类未混淆,我如何仍将所有类移动到根包?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...