2017-06-10 3 views
0

Je vous écris une application avec Kotlin et Retrotif 2. Comme je l'utilise proguard, je suivre les règles iciComment sauter les modèles proguard utilisés par retrofit2 qui est sur le paquet de base?

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

De plus, je dois aussi Proguard mes modèles aussi, comme indiqué dans https://stackoverflow.com/a/41136007/3286489

il fonctionne très bien si j'ai mes modèles dans un paquet, et je -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) 
} 

Cependant, si je continue mes modèles dans le package de base que le code ci-dessous, mais je ne veux pas garder le paquet entier à savoir -keep class com.elyeproj.wikisearchcount.** { *; }, depuis cette défaite dans le but de 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) 
} 

Comment pourrais-je garder mes classes de modèle? J'ai essayé -keep class com.elyeproj.wikisearchcount.Model.** { *; }, mais cela ne fonctionne pas.

Répondre

0

Après avoir exploré plus loin, j'ai trouvé la réponse

-keep class com.elyeproj.wikisearchcount.Model** { *; } 
1

Pourquoi ne pas utiliser l'annotation @SerializedName et vous n'avez pas à vous soucier de l'obscurcissement? Vous pouvez utiliser le code suivant:

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) 
}