Android Proguard/R8排除资产文件夹的规则

Android Proguard/R8排除资产文件夹的规则,android,android-proguard,android-build,android-module,android-r8,Android,Android Proguard,Android Build,Android Module,Android R8,我的项目由主模块组成,然后是其他模块依赖项。 一个这样的依赖是“commons”。 在“commons”中有一个名为“flags”的资产文件夹 如果我们事先知道这个文件夹永远不会被使用,有没有办法编写一个proguard规则来排除这个特定的“flags”文件夹 在我的项目中,主模块没有使用专门针对此文件夹的“commons”模块中的任何代码,但它仍然包含在最终包中。R8和Proguard都无法删除资产,因为它们甚至没有作为输入传递给这些工具。此外,即使它们是输入的一部分,也很容易发现资产是否被使

我的项目由主模块组成,然后是其他模块依赖项。 一个这样的依赖是“commons”。 在“commons”中有一个名为“flags”的资产文件夹

如果我们事先知道这个文件夹永远不会被使用,有没有办法编写一个proguard规则来排除这个特定的“flags”文件夹


在我的项目中,主模块没有使用专门针对此文件夹的“commons”模块中的任何代码,但它仍然包含在最终包中。

R8和Proguard都无法删除资产,因为它们甚至没有作为输入传递给这些工具。此外,即使它们是输入的一部分,也很容易发现资产是否被使用。出于同样的原因,R8和Proguard不会删除Java资源(它们可能只会更改路径/名称)

您的问题的解决方案可能是在应用程序
build.gradle
文件中使用DSL。即,如果您添加:

android {
  aaptOptions {
    ignoreAssetsPattern "<dir>flags"
  }
}
android{
A选项{
ignoreAssetsPattern“标志”
}
}
最终的APK将不包含
标志
目录下的任何文件。请记住,此选项不是特定于变量的,所有应用程序变量(例如调试、发布)都不会包含这些资产


希望有帮助。

太好了,谢谢你的回答。知道子文件夹是否可以作为目标吗?类似于ignoreAssetsPattern“[文件夹][子文件夹]”