Proguard - 在保留外包的同时混淆内包

Proguard - Obfuscate inner packages while keeping outer packages

我正在开发一个使用我自己的自定义 framework/jar/SDK 的 android 应用程序。假设SDK包名是com.vrs.fm,在这个主包内,有N个子包,类。由于历史原因,我的申请包是com.vrs.app

在我的自定义 vrs SDK 上启用混淆器时,我需要将 类 保留在包 com.vrs 下,所以我添加了以下混淆器规则。

 -dontwarn com.vrs.**
-keep class com.vrs.** { *; }

这使我的应用程序代码也不会被混淆。

现在我想知道是否有任何 way/rule,我可以在 com.vrs.app 包下混淆 类 但将 类 保留在 com.vrs.fm

您可以使用排除规则来排除保留某些子包:

-keep class !com.vrs.app.**, com.vrs.** { *; }

如果 com.vrs.app 中的某些部分仍然需要明确保留,您可以根据需要添加额外的保留规则,例如:

-keep class com.vrs.app.xxx.yyy { xxx; }