Sil*_*los 0 debugging android release apk android-studio
我即将在我的应用商店上发布一个发布版本。调试版本(我用我的手机代替模拟器),完美运行,没有任何问题。
然而,“签名 APK”版本根本没有连接到后端。
我如何在 Android Studio 中生成签名的 APK:
构建 --> 生成签名的 APK
创建一个新的密钥库(使用密码)
构建类型 == 发布。
通过移动实际的 APK 文件本身并允许从未知来源安装,将其安装到手机上。
我的标准请求(IE Signin、getUser、GetSomethingX)都出错了。这被证明是一个比我最初想象的更大的问题,因为我无法弄清楚如何测试日志打印语句并在日志猫中查看它们。当然,我可以使用 Toasts,但是尝试以这种方式阅读它有点痛苦。我编写的实际代码的调试版本和发布版本之间没有区别。
问题:为什么我的 APK 的调试版本可以完美运行,但构建/发布版本却不能?我一直在与后端的网络人员来回走动,我们不确定谁有错。应用程序的调试版本和发布版本之间是否存在本质上的不同,可能会阻止其正常工作?
有人知道吗?
谢谢大家!
-Sil
好的,找到答案了。
解决方案与这里的这个问题基本相同: Gson deserialize null pointer in release apk
我最初的问题是发布版本和调试版本之间是否存在差异:答案是,如果您使用 proguard 并将 minifyEnabled 设置为 true,它将混淆(请参阅此处的链接了解混淆详细信息/定义)您的代码(我希望发生的事情) )。通常,这对代码来说不是问题,因为它会将 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
.
}
Run Code Online (Sandbox Code Playgroud)
TL/DR - 如果您使用 Gson,请始终将 @SerializedName("JSON_VARIABLE_NAME") 添加到所有 POJO 类变量名称中。
-Sil
| 归档时间: |
|
| 查看次数: |
1980 次 |
| 最近记录: |