我的项目由主模块组成,其后是其他模块依赖项。 这样的依赖性之一就是“常见”。 假设在“常见”中有一个名为“标志”的资产文件夹。
如果我们事先知道将不再使用此文件夹,是否可以编写保护规则以排除此特定的“标志”文件夹?
在我的项目中,主模块未使用“通用”模块中专门针对此文件夹的任何代码,但仍包含在最终软件包中。
答案 0 :(得分:1)
R8和Proguard都无法删除资产,因为这些资产甚至都没有作为输入传递给这些工具。同样,即使它们是输入的一部分,查找是否使用资产也不是一件容易的事。出于相同的原因,R8和Proguard不会删除Java资源(它们只能更改其路径/名称)。
解决问题的方法可能是在应用程序build.gradle
文件中使用DSL。即,如果您添加:
android {
aaptOptions {
ignoreAssetsPattern "<dir>flags"
}
}
最终的APK将在flags
目录下不包含任何文件。请记住,此选项不是特定于变量的,并且所有应用程序变量(例如,调试,发行版)都不会包含这些资产。
希望有帮助。