Я пишу приложение с 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** { *; }