minifyEnabled 删除已用资源

Adv*_*Dog 1 android proguard android-gradle-plugin

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

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

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

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

Adv*_*Dog 6

事实证明,minifyEnabled true并没有删除任何资产,它只是为了代码优化并混淆了剩余的类。

问题是我在数据库模型中使用 Gson,无论@SerializedName是否经过混淆,它都无法绑定值。

dataclass MyModel( val myName : String )
Run Code Online (Sandbox Code Playgroud)

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

dataclass XYZ( val 123 : String )
Run Code Online (Sandbox Code Playgroud)

然后 Gson 找不到值“myName”来放置 JSON。

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

  • 要么添加@SerializedName到每个变量。
  • 或者,如果您不关心混淆(例如开源应用程序),则可以通过添加useProguard false.