已知Proguard可以做到:

  • 多个输入包。使用injars可以做到。
  • 只产生一个输出包。

  有时我们需要,多个包混淆后依然是多个包。怎么办?

  • 解析mapping文件,建立源文件名与混淆名的对应关系。
  • 解压输出包到目录A。
  • 解压一个输入包到目录B。
  • 根据对应关系:把输出目录A中的文件复制到B中(同时要建立目录);删除源文件名;清理空目录。
  • 重新打包目录B。
  • 复制所有输入包。

  有人会问,为什么要解压输入包呢?因为输入包中有很多非class文件,这些文件的目录是不会调整的,这样最省事。