android minify已启用删除已使用的资产

wdebmtf2  于 2022-12-09  发布在  Android
关注(0)|答案(3)|浏览(164)

我在我的assets文件夹中有一个目录,其中包含一个数据库json。
assets/database/database_1/locations.json
当使用minifyEnabled true时,它会删除那些资产,因为它认为它们没有被使用。
如何告知ProGuard它们已被使用?

q3qa4bjr

q3qa4bjr1#

事实证明,minifyEnabled true并没有删除任何资产,它只是用于代码优化,并对剩余的类进行了模糊处理。
问题是,我在没有@SerializedName的数据库模型中使用Gson,它无法绑定值。

dataclass MyModel( val myName : String )

会变成:(或更模糊的内容)

dataclass XYZ( val 123 : String )

然后Gson找不到值“myName”来放置JSON。
要解决此问题,您有两个解决方案。

  • @SerializedName添加到每个变量。
  • 或者,如果您不喜欢模糊处理,比如开源应用,您可以通过添加useProguard false来禁用这种优化。
2j4z5cfb

2j4z5cfb2#

进行这种优化的不是ProGuard。请参阅https://developer.android.com/studio/build/shrink-code.html#keep-resources。也就是说,资产不应受到影响,只应受到资源的影响。

0h4hbjxa

0h4hbjxa3#

minifyEnabled=true会移除assets文件夹中储存的所有gpx档案。使用minifyEnabled=false的相同项目重建会保留assets文件夹中的所有gpx档案。

相关问题