如何跳过基础包中的retrofit2使用的proguard模型?

我正在用Kotlin和Retrotif 2写一个应用程序。当我使用proguard时,我遵循这里的规则

https://github.com/krschultz/android-proguard-snippets/blob/master/libraries/proguard-square-retrofit2.pro

除此之外,我也需要推进我的模型,如https://stackoverflow.com/a/41136007/3286489

如果我在一个包中有我的模型,并且我有-keep class com.elyeproj.wikisearchcount.model.** { *; } -keep class com.elyeproj.wikisearchcount.model.** { *; }

 package com.elyeproj.wikisearchcount.model object Model { data class Result(val query: Query) data class Query(val searchinfo: SearchInfo) data class SearchInfo(val totalhits: Int) } 

但是,如果我保留我的模型在基础包中的代码如下,但我不想保留整个包即-keep class com.elyeproj.wikisearchcount.** { *; } 因为这打败了proguard的目的

 package com.elyeproj.wikisearchcount object Model { data class Result(val query: Query) data class Query(val searchinfo: SearchInfo) data class SearchInfo(val totalhits: Int) } 

我怎么能保留我的模型班?

我尝试了-keep class com.elyeproj.wikisearchcount.Model.** { *; } -keep class com.elyeproj.wikisearchcount.Model.** { *; } ,但它不起作用。

你为什么不使用注解@SerializedName ,然后你不必担心混淆? 你可以使用下面的代码:

 object Model { data class Result(@SerializedName("query") val query: Query) data class Query(@SerializedName("searchInfo") val searchinfo: SearchInfo) data class SearchInfo(@SerializedName("totalhits") val totalhits: Int) } 

经过进一步探索,我找到了答案

 -keep class com.elyeproj.wikisearchcount.Model** { *; }