使用Spring Rest Template的AndroidAnnotations在混淆时不起作用

时间:2014-03-01 16:27:38

标签: java android android-annotations

我的Android应用程序使用AndroidAnnotations和Spring Rest Template。创建调试版时,它运行正常。但是,当我创建发布版本时,REST调用不起作用。以下是我的代码和构建配置中的一些相关代码段。

活动

public class MyActivity extends Activity {
    @Bean
    protected MyService myService;

    @Background
    protected void fetchData() {
        try {
            data = myService.getData();
        } catch (DataAccessException dae) {
            Log.e(getClass().getSimpleName(), dae.getMessage(), dae);
        }
    }
}

服务

@EBean
public class MyService {
    @RestService
    protected MyRestClient myRestClient;

    public Data getData() {
        return myRestClient.getData();
    }
}

RESTClient实现

@Rest(converters = { GsonHttpMessageConverter.class },
      interceptors = { AuthenticationInterceptor.class, UserAgentInterceptor.class },
      rootUrl = "https://myhost/rest")
public interface MyShiftRestClient {
    @Get("/data")
    Data getData();
}

ProGuard配置

-dontwarn org.apache.http.annotation.Immutable
-dontwarn org.apache.http.annotation.NotThreadSafe
-dontwarn org.springframework.**

-keep class com.mypackage.** {
  public protected private *;
}

-keepclassmembers public class org.springframework.** {
   public *;
}

运行混淆的应用程序时,MyRestClient返回的Data对象是一个空对象,即它已初始化但其实例变量都没有任何值。我想这与我的ProGuard配置有关,这就是为什么我添加了最后一个配置语句,但它没有任何效果。没有记录异常。

1 个答案:

答案 0 :(得分:2)

尝试保留Data类的成员。数据类属性必须不受影响,以允许Gson转换器填充它,因为它是基于属性名称完成的。

祝你好运。