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

Android:调试和发布具有不同结果的版本,android,debugging,android-studio,apk,release,Android,Debugging,Android Studio,Apk,Release,我即将在我的应用商店上发布发布版本。调试版本(我用手机代替仿真器)可以完美地工作,没有任何问题 然而,“签名的APK”版本根本没有连接到后端 我是如何在Android Studio中生成已签名的APK的: 生成-->生成签名APK 创建新密钥库(使用pw) 构建类型==发布 通过移动实际APK文件本身并允许从未知来源安装,将其安装到手机上 我的标准请求(即登录、getUser、GetSomethingX)都出错了。事实证明,这是一个比我最初想象的更大的问题,因为我不知道如何测试日志打印语句并

我即将在我的应用商店上发布发布版本。调试版本(我用手机代替仿真器)可以完美地工作,没有任何问题

然而,“签名的APK”版本根本没有连接到后端

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

  • 生成-->生成签名APK

  • 创建新密钥库(使用pw)

  • 构建类型==发布

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

我的标准请求(即登录、getUser、GetSomethingX)都出错了。事实证明,这是一个比我最初想象的更大的问题,因为我不知道如何测试日志打印语句并在日志cat中查看它们。一、 当然,你可以用祝酒词,但是试着这么读有点痛苦。我编写的实际代码的调试版本和发布版本之间没有区别

问题是: 关于为什么我的APK调试版本工作得很好,而构建/发布版本却不工作,我是否缺少一些东西?我一直在和网络部的人在后端来回奔波,我们不确定谁是这里的错。某个应用程序的调试版本和发布版本之间是否存在本质上的差异,从而阻止其正常工作

有人知道吗

谢谢大家


-Sil

也许这无法回答您的问题
您使用过usb调试吗?
这是一种允许您直接从真实手机调试应用程序的方法
您只需下载驱动程序,启用手机调试模式,然后通过usb将手机插入PC/笔记本电脑

希望这对您有所帮助

致以最诚挚的问候

也许这无法回答您的问题
您使用过usb调试吗?
这是一种允许您直接从真实手机调试应用程序的方法
您只需下载驱动程序,启用手机调试模式,然后通过usb将手机插入PC/笔记本电脑

希望这对您有所帮助
致以最诚挚的问候

好的,找到了答案

在这里,这个问题的解决方案基本相同:

我最初的问题是,发布版本和调试版本之间是否存在差异:答案是,如果使用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
    .
}
TL/DR-如果使用Gson,请始终将@SerializedName(“JSON_VARIABLE_NAME”)添加到所有POJO类变量名中

-Sil

好的,找到了答案

在这里,这个问题的解决方案基本相同:

我最初的问题是,发布版本和调试版本之间是否存在差异:答案是,如果使用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
    .
}
TL/DR-如果使用Gson,请始终将@SerializedName(“JSON_VARIABLE_NAME”)添加到所有POJO类变量名中


-Sil

谢谢您的回复。我的调试应用程序正在使用USB调试,正如我在帖子中提到的(我用手机代替仿真器),但我无法在发布版本中使用USB调试,因为它不会打印logcat详细信息。哦,对不起,我以为你只使用仿真器。对我来说,dubugging发布应用程序很幸运,但你可以试试这些,通过usb将手机插入PC/笔记本电脑,直到PC识别出你的手机。在打开android studio之后,打开你的应用程序,在android studio的android监视器选项卡上,它会在连接的设备中显示你的手机,在它旁边,你可以选择可调试的应用程序,有时你的应用程序会显示在列表中,别忘了为你的日志级别选择“错误”。选择它后,您可以尝试使您的应用程序出错,它将显示在中。谢谢您的回复。我的调试应用程序正在使用USB调试,正如我在帖子中提到的(我用手机代替仿真器),但我无法在发布版本中使用USB调试,因为它不会打印logcat详细信息。哦,对不起,我以为你只使用仿真器。对我来说,dubugging发布应用程序很幸运,但你可以试试这些,通过usb将手机插入PC/笔记本电脑,直到PC识别出你的手机。在打开android studio之后,打开你的应用程序,在android studio的android监视器选项卡上,它会在连接的设备中显示你的手机,在它旁边,你可以选择可调试的应用程序,有时你的应用程序会显示在列表中,别忘了为你的日志级别选择“错误”。选择后,您可以尝试使您的应用程序出错,它将显示在那里