我正在用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.** { *; }
,但它没有用。
答案 0 :(得分:8)
为什么不使用注释@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)
}
答案 1 :(得分:3)
经过进一步探索,我找到了答案
-keep class com.elyeproj.wikisearchcount.Model** { *; }