我正在用Kotlin和Retrofit 2编写一个应用程序。当我使用proguard时,我遵循这里的规则:
此外,我还需要对我的模型进行预测,如https://stackoverflow.com/a/41136007/3286489所述
如果我把我的模型放在一个包中,它就可以了。我有-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.** { *; }
,但它不起作用。
为什么不使用注释@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** { *; }