当我运行发布版本(签名,Proguard 打包)时,我的应用程序不会将数据发布到服务器。但是如果我直接从 ADT 运行它,我会看到服务器上的数据。
这很奇怪,因为它只是相同的代码,一个是签名的,另一个是直接执行的。这是代码(使用org.springframework.web.client.RestTemplate
):
private static String URL = "https://myappserver.com/abcservice/";
public ResponseEntity<String> sendMessage(UserMessage us) {
private RestTemplate template = getTemplate();
HttpEntity<UserMessage> reqEntity = new HttpEntity<UserMessage>(us, headers);
ResponseEntity<String> result =
template.postForEntity(URL, reqEntity, String.class);
return result;
}
下面是2个场景:
案例 1:运行良好
- 直接从 ADT 运行应用程序(运行方式:Android 应用程序)
- 用户点击一个按钮,该按钮将调用
sendMessage(..)
方法。 - 控制器(在服务器上)获取请求和数据(
UserMessage
)。 - 创建了一个带有 UserMessage 的条目。
- 服务器向应用程序发送 201 响应(请求已完成)。
案例 2:问题
- 打包应用程序(Android 工具 -> 导出签名的应用程序包..)
- 通过命令行将其安装在设备上(adb install xxx.apk)
- 启动应用程序。
- 用户点击一个按钮,该按钮将调用
sendMessage(..)
方法。 - 控制器(在服务器上)获取请求但没有数据。
- 创建了一个带有空 UserMessage的条目。
- 服务器向应用程序发送 201 响应(请求已完成)。
我尝试在我的设备和网络服务器上登录,我可以确认收到了案例 2 的空数据,但我无法弄清楚为什么打包时它不发送数据?
与调试打包相比,打包/发布(签名 +Proguard)应用程序的行为是否不同?