使用proguard改进@QueryMap

时间:2014-11-24 18:36:34

标签: android proguard retrofit

当我在启用proguard的情况下运行应用程序时,@QueryMap查询字符串未附加到主URL。 界面功能是:

@GET(PATH_HEADER + "/function/")
ServiceLoginResponse function( @QueryMap Map options );

启用日志后,使用proguard,这是请求:

com.app D/Retrofit﹕ ---> HTTP GET https://domain.com/json/function/
com.app D/Retrofit﹕ Cache-Control: public, max-age=600
com.app D/Retrofit﹕ ---> END HTTP (no body)

没有proguard:

com.app D/Retrofit﹕ ---> HTTP GET https://domain.com/json/function/?param1=val1&param2=val2
com.app D/Retrofit﹕ Cache-Control: public, max-age=600
com.app D/Retrofit﹕ ---> END HTTP (no body)

在我的Proguard规则文件中,我有这个;

-keep class retrofit.** { *; }

1 个答案:

答案 0 :(得分:2)

对于改造,您需要保留注释。为此添加此规则:

-keepattributes *Annotation*

然后你需要你的规则来保留Retrofit类:

-keep class retrofit.** { *; }

您可能需要保留REST API及其API方法:

-keepclasseswithmembers class * {
    @retrofit.http.* <methods>;
}