我即将在我的应用商店发布发布版本。调试版本(我使用我的手机代替模拟器),完美运行没有任何问题。
然而,“签名APK”版本根本没有连接到后端。
我如何在Android Studio中生成签名APK:
构建 - >生成签名APK
创建一个新的密钥库(使用pw)
构建类型==发布。
通过移动实际的APK文件本身并允许从未知来源安装,将其安装到手机上。
我的标准请求(IE Signin,getUser,GetSomethingX)都是错误的。这被证明是一个比我原先想象的更大的问题,因为我无法弄清楚如何测试日志打印语句并在log cat中查看它们。当然,我可以使用Toasts,但尝试以这种方式阅读它有点痛苦。我编写的实际代码的调试版和发行版之间没有区别。
问题: 有什么东西我错过了为什么我的调试版本的APK工作完美,但构建/发布版本没有?我一直和后端的网络人员来回走动,我们不确定谁在这里有过错。在应用程序的调试版本和发布版本之间是否存在根本不同的东西,可能会阻止它按预期工作?
有人知道吗?
全部谢谢!
-Sil
答案 0 :(得分:3)
好的,找到了答案。
解决方案与此问题基本相同: 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类变量名称。
-Sil
答案 1 :(得分:0)
也许这不会回答你的问题
你有没有使用USB调试?
这是一种允许您直接从真实手机调试应用程序的方法
你只需要下载驱动程序,启用手机调试模式,然后通过usb将手机插入PC /笔记本电脑
this is the link about how to setup the usb debugging