gpt4 book ai didi

Android:调试和发布版本有不同的结果

转载 作者:行者123 更新时间:2023-12-05 00:11:25 29 4
gpt4 key购买 nike

我即将在我的应用程序商店中发布一个发行版本。调试版本(我使用手机代替模拟器)完美运行,没有任何问题。

但是,“签名 APK”版本根本没有连接到后端。

我如何在 Android Studio 中生成签名的 APK:

  • 构建 --> 生成签名 APK

  • 创建一个新的 keystore (使用 pw)

  • 构建类型 == 发布。

  • 通过移动实际的 APK 文件本身并允许从未知来源安装,将其安装到手机上。

我的标准请求(IE Signin、getUser、GetSomethingX)都出错了。这证明是一个比我原先想象的更大的问题,因为我无法弄清楚如何测试日志打印语句并在日志猫中查看它们。我当然可以使用 Toasts,但尝试以这种方式阅读它有点痛苦。我编写的实际代码的调试版本和发布版本之间没有区别。

问题:关于为什么我的 APK 调试版本可以完美运行但构建/发布版本却不能正常运行,我是否遗漏了什么?我一直在与后端的网络人员来回交流,我们不确定这里是谁的错。应用程序的调试版本和发布版本之间是否存在根本差异,可能会阻止其正常工作?

有人知道吗?

谢谢大家!

最佳答案

好的,找到答案了。

这里的解决方法和这个问题基本一样: Gson deserialize null pointer in released apk

我最初的问题是发布版本和调试版本之间是否存在差异:答案是,如果您使用 proguard 并将 minifyEnabled 设置为 true,它会混淆 ( See link here for Obfuscation details/ Definition) 您的代码(这是我想要发生的)。通常,这对代码来说不是问题,因为它会将 R 文件中的点编译为正确的字符串,并且它们的命名差异为零,但是,当您使用像 Gson 这样的依赖项时,这很重要,因为 Gson 需要读取传入的 JSON Strnig 变量名称并在您的代码中匹配它们。

这里的最终结果是,要解决没有 JSON 对象被正确解析的原始问题,您只需要将序列化名称添加到您的 POJO 类变量中。一个例子是:

public class Person {
@SerializedName("name")
private String name;
@SerializedName("email")
private String email;
@SerializedName("phoneNumber")
private String phoneNumber;
.
//Setters and Getters
.
}

TL/DR - 如果您使用 Gson,请始终将 @SerializedName("JSON_VARIABLE_NAME") 添加到您的所有 POJO 类变量名称中。

关于Android:调试和发布版本有不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35213494/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com