我在我的assets文件夹中有一个目录,其中包含一个数据库json。assets/database/database_1/locations.json当使用minifyEnabled true时,它会删除那些资产,因为它认为它们没有被使用。如何告知ProGuard它们已被使用?
minifyEnabled true
q3qa4bjr1#
事实证明,minifyEnabled true并没有删除任何资产,它只是用于代码优化,并对剩余的类进行了模糊处理。问题是,我在没有@SerializedName的数据库模型中使用Gson,它无法绑定值。
@SerializedName
dataclass MyModel( val myName : String )
会变成:(或更模糊的内容)
dataclass XYZ( val 123 : String )
然后Gson找不到值“myName”来放置JSON。要解决此问题,您有两个解决方案。
useProguard false
2j4z5cfb2#
进行这种优化的不是ProGuard。请参阅https://developer.android.com/studio/build/shrink-code.html#keep-resources。也就是说,资产不应受到影响,只应受到资源的影响。
0h4hbjxa3#
minifyEnabled=true会移除assets文件夹中储存的所有gpx档案。使用minifyEnabled=false的相同项目重建会保留assets文件夹中的所有gpx档案。
3条答案
按热度按时间q3qa4bjr1#
事实证明,
minifyEnabled true
并没有删除任何资产,它只是用于代码优化,并对剩余的类进行了模糊处理。问题是,我在没有
@SerializedName
的数据库模型中使用Gson,它无法绑定值。会变成:(或更模糊的内容)
然后Gson找不到值“myName”来放置JSON。
要解决此问题,您有两个解决方案。
@SerializedName
添加到每个变量。useProguard false
来禁用这种优化。2j4z5cfb2#
进行这种优化的不是ProGuard。请参阅https://developer.android.com/studio/build/shrink-code.html#keep-resources。也就是说,资产不应受到影响,只应受到资源的影响。
0h4hbjxa3#
minifyEnabled=true会移除assets文件夹中储存的所有gpx档案。使用minifyEnabled=false的相同项目重建会保留assets文件夹中的所有gpx档案。