我的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配置有关,这就是为什么我添加了最后一个配置语句,但它没有任何效果。没有记录异常。
答案 0 :(得分:2)
尝试保留Data类的成员。数据类属性必须不受影响,以允许Gson转换器填充它,因为它是基于属性名称完成的。
祝你好运。