2017-06-10 4 views
0

ich eine Anwendung mit Kotlin und Retrotif schreibe 2. Wie ich proguard verwenden, folgen ich die Regeln hierWie kann ich die Proguard-Modelle von Retrofit2, die sich auf dem Basispaket befinden, überspringen?

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

Außerdem muss ich auch zu meinen Modellen ProGuard, wie in https://stackoverflow.com/a/41136007/3286489 angegeben

es funktioniert gut, wenn ich meine Modelle in einem Paket habe, und ich habe -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) 
} 

Allerdings, wenn ich meine Modelle im Basispaket wie der Code halten unten, aber ich will nicht das gesamte Paket halten heißen -keep class com.elyeproj.wikisearchcount.** { *; }, da dies den Zweck der proguard besiegen

package com.elyeproj.wikisearchcount 

object Model { 
    data class Result(val query: Query) 
    data class Query(val searchinfo: SearchInfo) 
    data class SearchInfo(val totalhits: Int) 
} 

Wie kann ich meine Modellklassen halten?

Ich versuchte -keep class com.elyeproj.wikisearchcount.Model.** { *; }, aber es funktioniert nicht.

Antwort

0

Nach weiteren Erkundung, fand ich die Antwort

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

Warum Sie nicht die Anmerkung @SerializedName verwenden und dann haben Sie nicht über die Verschleierung zu kümmern? Sie könnten den folgenden Code verwenden:

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