如何在 Android Studio 中使用 progaurd 时排除包名和子包名?

How to exclude package name and sub package name while using progaurd In Android Studio?

我的项目包名称为

in.myapplication.app

我有一个包,里面有好几个这样的包

in.myapplication.app.samplePackage

in.myapplication.app.samplePackage.SubPackage

现在我想排除 samplePackage 包内的所有 类,包括子包 类。我在 progaurd 文件中尝试了这个保留规则

-keep class  in.myapplication.app.samplePackage.*{*;}

但它只允许 samplePackage 中的 类 而不是 samplePackage.SubPackage

中的 类

我查过类似的问题

  1. How to keep/exclude a particular package path when using proguard?
  2. Make Proguard completely ignore package

没有效果并尝试使用这些

-keep class in.myapplication.app.samplePackage.** {*;}

但它向我显示警告

Unresolved reference name in shrinker config file

那么,如何在 Android Studio 中使用 progaurd 时排除包名和子包名?

将所有内容保存在包 in.myapplication.app.samplePackage 和所有子包中的正确规则是:

-keep class in.myapplication.app.samplePackage.** {*;}

您看到的警告可能是假阴性,请参阅 issue 153616200

Android Studio 4.0 及更高版本 双星号 ()** 将不再编译。所以如果你想修复这个错误并排除 sub-packages 这样做

-keep class in.myapplication.app.samplePackage.*.* {*;}

这也将排除 samplePackage 中的包