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

时间:2019-05-16 08:06:53

标签: android android-proguard android-build android-module android-r8

我的项目由主模块组成,其后是其他模块依赖项。 这样的依赖性之一就是“常见”。 假设在“常见”中有一个名为“标志”的资产文件夹。

如果我们事先知道将不再使用此文件夹,是否可以编写保护规则以排除此特定的“标志”文件夹?

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

1 个答案:

答案 0 :(得分:1)

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

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

android {
  aaptOptions {
    ignoreAssetsPattern "<dir>flags"
  }
}

最终的APK将在flags目录下不包含任何文件。请记住,此选项不是特定于变量的,并且所有应用程序变量(例如,调试,发行版)都不会包含这些资产。

希望有帮助。