我在发布模式下使用改装收到空响应,但在调试模式下一切正常
I receive null response using retrofit in release mode but in debug mode everything works fine
我在应用程序中使用 retrofit 来调用 http 请求并使用 gson 来解析 json 对象。我在调试模式下得到了正确的响应,但在使用发布模式构建时我的响应是 null
并且我的应用程序不再工作
一段时间后我找到了答案......
我将混淆器用于发布模式,因此由于混淆,模型字段名称发生变化,因此 gson 无法解析 http 响应,防止此问题的最佳方法是在字段中使用 @SerializedName("field_name") 注释,以便在混淆后进行解析.
可能您为发布模式启用了混淆器。
检查您的应用程序 gradle build 并查看是否启用了 minify。如果禁用它,您的代码将不会被混淆,并且您将不再遇到发布版本的任何问题。
如果您确实想要混淆有利于应用安全的代码,那么您必须为应用中包含的每个库找到混淆规则。然后你必须在你的混淆规则文件中添加这些规则。此外,您还必须跳过 POJO 类 以免混淆。
可以在@jemshit 创建的文件中找到大多数库的通用混淆器规则
https://gist.github.com/jemshit/767ab25a9670eb0083bafa65f8d786bb
我在应用程序中使用 retrofit 来调用 http 请求并使用 gson 来解析 json 对象。我在调试模式下得到了正确的响应,但在使用发布模式构建时我的响应是 null
并且我的应用程序不再工作
一段时间后我找到了答案...... 我将混淆器用于发布模式,因此由于混淆,模型字段名称发生变化,因此 gson 无法解析 http 响应,防止此问题的最佳方法是在字段中使用 @SerializedName("field_name") 注释,以便在混淆后进行解析.
可能您为发布模式启用了混淆器。 检查您的应用程序 gradle build 并查看是否启用了 minify。如果禁用它,您的代码将不会被混淆,并且您将不再遇到发布版本的任何问题。
如果您确实想要混淆有利于应用安全的代码,那么您必须为应用中包含的每个库找到混淆规则。然后你必须在你的混淆规则文件中添加这些规则。此外,您还必须跳过 POJO 类 以免混淆。
可以在@jemshit 创建的文件中找到大多数库的通用混淆器规则
https://gist.github.com/jemshit/767ab25a9670eb0083bafa65f8d786bb