Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从play store安装AndroidApp时崩溃_Android - Fatal编程技术网

从play store安装AndroidApp时崩溃

从play store安装AndroidApp时崩溃,android,Android,我最近向play store提交了一个应用程序。我已经测试了.apk文件,一切正常。在第一次安装(从商店)-您可以登录,但随后它崩溃。以下是我从报告中获得的堆栈跟踪: java.lang.NullPointerException at com.latlon.InitialSearchActivity.e(Unknown Source) at com.latlon.InitialSearchActivity.a(Unknown Source) at com.latlon.InitialSearch

我最近向play store提交了一个应用程序。我已经测试了.apk文件,一切正常。在第一次安装(从商店)-您可以登录,但随后它崩溃。以下是我从报告中获得的堆栈跟踪:

java.lang.NullPointerException
at com.latlon.InitialSearchActivity.e(Unknown Source)
at com.latlon.InitialSearchActivity.a(Unknown Source)
at com.latlon.InitialSearchActivity.g(Unknown Source)
at com.latlon.InitialSearchActivity.a(Unknown Source)
at com.latlon.MyResultReceiver.onReceiveResult(Unknown Source)
at android.os.ResultReceiver$MyRunnable.run(ResultReceiver.java:43)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:150)
at android.app.ActivityThread.main(ActivityThread.java:4385)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
at dalvik.system.NativeStart.main(Native Method)

我只是不确定从哪里开始寻找。有什么想法吗?

嗯,堆栈跟踪的这一部分是您的代码:

java.lang.NullPointerException
at com.latlon.InitialSearchActivity.e(Unknown Source)
at com.latlon.InitialSearchActivity.a(Unknown Source)
at com.latlon.InitialSearchActivity.g(Unknown Source)
at com.latlon.InitialSearchActivity.a(Unknown Source)
at com.latlon.MyResultReceiver.onReceiveResult(Unknown Source)
调用了类
MyResultReceiver
中的
onReceiveResult()
方法。该方法在
InitialSearchActivity
类中称为方法
a
,在该类中称为方法
g
,在该类中称为方法
a
,在该类中称为方法
e
。在方法
e
中有一个
NullPointerException
(即:在该方法中,您试图使用一个您认为包含对象引用的变量,但该变量包含
null


看起来方法名已经被混淆,因此您可能必须查看代码才能确定真正的方法名。

查看Proguard(这是进行代码混淆的工具)上的文档

您很可能“过于模糊”,这可能会导致部署的代码出现问题。正如您所看到的

您可以通过编辑“Proguard project.txt”文件来关闭Proguard功能。为确保不会发生混淆,请确保此文件中的每一行都已注释掉(通过在每一行的开头放置哈希或#标记)

有一个名为
retrace
的命令,允许您提供取消映射的模糊处理。您需要提供一些由proguard创建的文件以使其正常工作

查看文档以获取完整解释:


快速修复(消除Proguard)是对文件进行注释,因此它不会首先运行。

看起来您使用了一些工具(如Proguard)来混淆代码。 你在混淆后测试过你的APK吗

根据上面的日志,代码中发生了NullPointerException,您需要使用模糊处理工具生成的密钥文件对代码进行模糊处理,以找出访问null指针的真实位置(代码行)

请注意,
在模糊处理过程中,有时(人为错误)会导致某些必需的方法被模糊处理。这反过来会导致找不到这些方法,因此出现异常(NoSuchMethod)可能会引发。

是某种服务器结果没有正确处理吗?这显然是一个空ptr错误,因此,您在这个InitialSearchActivity类中没有正确处理空值…(我假设这是您的类,而不是库或其他).是否提供该类中的一些代码?请原谅我在这里缺乏知识。是否可以删除混淆?我假设在我的.apk本地副本(未为存储签名的副本)上未进行模糊处理,因此其工作正常?这取决于您是如何从项目中导出未签名的apk的。如果您使用的是ant build,则需要注释掉proguard.txt的内容或删除ant build.xml的引用,这取决于此。可能是模糊处理导致了问题。也可能是您的code已损坏,但您没有看到问题。您可以禁用模糊处理,也可以尝试自己运行模糊处理的版本,看看是否可以重现问题。如果无法通过查看代码确定问题所在,则可能需要添加一些日志记录。OP获取
NullPointerException
,而不是
NoSuchMethod
>。是的,我理解这一点,但我仍然想指出由于混淆而可能出现的其他问题。感谢所有人的帮助。我删除了混淆并重建了apk,现在它回到了商店,工作正常。我将花一些时间加快在下一版本中使用proguard的速度。