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

Ely*_*lye 1 android proguard kotlin retrofit2

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

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

此外,我还需要预测我的模型,如/sf/answers/2879520521/中所述

如果我把我的模型放在一个包中,它就可以正常工作了 -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)
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我将我的模型保存在基础包中作为下面的代码,但我不想保留整个包,即-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)
}
Run Code Online (Sandbox Code Playgroud)

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

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

Jc *_*rro 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)
}
Run Code Online (Sandbox Code Playgroud)