Как пропустить модели proguard, используемые retrofit2, которые находятся на базовом пакете?

Я пишу приложение с 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.** { *; } -keep class com.elyeproj.wikisearchcount.** { *; } , так как это поражает цель пролога

 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** { *; }