minifyEnabled删除已使用的资产

时间:2018-01-14 20:31:30

标签: android android-gradle android-proguard

我的资产文件夹中有一个目录,其中json用于数据库。

  

资产/数据库/ database_1 / locations.json

使用minifyEnabled true时,它会删除这些资产,因为它认为它们没有被使用。

如何告诉ProGuard它们已被使用?

感谢。

2 个答案:

答案 0 :(得分:1)

事实证明minifyEnabled true不删除任何资产,它仅用于代码优化并对其余类进行模糊处理。

问题是我在没有@SerializableName的情况下使用Gson和我的数据库模型,并且在模糊处理时它无法绑定值。

dataclass MyModel( val myName : String )

会变成:(或更混淆的东西)

dataclass XYZ( val 123 : String )

然后Gson找不到值" myName"把JSON。

要解决此问题,您有两种解决方案。

  • 为每个变量添加@SerializableName
  • 或者,如果您不关心混淆,例如使用开源应用, 您可以通过添加useProguard false
  • 来停用该优化

答案 1 :(得分:0)

进行这种优化的不是ProGuard。见https://developer.android.com/studio/build/shrink-code.html#keep-resources。话虽这么说,资产不应该只受资源影响。