从Google Play下载应用时崩溃

时间:2019-04-17 18:07:38

标签: android google-play stack-trace

我刚刚构建了一个应用并将其部署到Google Play。当我通过Android Studio运行它时,它运行良好,但现在当我从Google Play下载它时,它崩溃了。因为这是我的第一次,所以我什至都不知道如何查看从Google Play下载的应用程序的崩溃报告/堆栈跟踪。非常感谢您的帮助。

更新

所以我得到了APK的stacktrace。它告诉我我的TopImageFragment.java类无法创建我的MemeViewModel.java类。我不知道为什么它给这个错误。一切正常。似乎proguard确实正在淘汰一个重要的课程:

2019-04-18 00:46:32.062 8099-8099/? E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.ozbek.onur.memegenerator, PID: 8099
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ozbek.onur.memegenerator/com.ozbek.onur.memegenerator.MainActivity}: java.lang.RuntimeException: Cannot create an instance of class com.ozbek.onur.memegenerator.MemeViewModel
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2853)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2928)
        at android.app.ActivityThread.-wrap11(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1609)
        at android.os.Handler.dispatchMessage(Handler.java:105)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6703)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:769)
     Caused by: java.lang.RuntimeException: Cannot create an instance of class com.ozbek.onur.memegenerator.MemeViewModel
        at android.arch.lifecycle.ViewModelProvider$NewInstanceFactory.create(ViewModelProvider.java:155)
        at android.arch.lifecycle.ViewModelProvider$AndroidViewModelFactory.create(ViewModelProvider.java:210)
        at android.arch.lifecycle.ViewModelProvider.get(ViewModelProvider.java:134)
        at android.arch.lifecycle.ViewModelProvider.get(ViewModelProvider.java:102)
        at com.ozbek.onur.memegenerator.TopImageFragment.onActivityCreated(TopImageFragment.java:89)

4 个答案:

答案 0 :(得分:1)

检查是否有没有访问修饰符的Java文件。以我的经验,仅声明一个没有public或private修饰符的类会导致此问题。

答案 1 :(得分:0)

根据我的建议,在下载并尝试打开手机时,请将手机保持与PC /笔记本电脑的连接。在android studio上使用Logcat,它主要包含所有答案,或者至少包含导致答案的错误。尝试将错误日志放在这里,以便我们进行适当的了解。

1)通过在android studio中推送,尝试与您在Google Play商店中部署的应用程序相同的版本,看看问题是否仍然存在!

2)如果发生相同的情况,则将断点放在应用程序的入口点(在大多数情况下,在MainActivity类中为onCreate方法),然后转到Run-> Debug“ YourProject”选项,并对每个正在执行的命令进行逐步调试执行并查看是哪个引起了问题。

答案 2 :(得分:0)

通常会发生这种问题,因为您部署到Google Play的应用是发布版本,并且保护了您的应用,并删除了它不应该拥有的类。当您在Android Studio中进行构建时,它是不会缩小的调试版本。这就是为什么您只能从Google Play看到崩溃的原因。

在上传到Google Play之前,请先在设备上测试您发布的APK文件,并查看logcat中的错误。这应该告诉您错误地删除了哪个类,您可以通过指定自定义proguard规则并重试直到应用停止崩溃来纠正此问题。然后,当您上传到Google Play时,您应该会很好。

您还可以通过更改build.gradle文件在调试版本中启用proguard。然后,当您运行Android Studio时,应该会看到与通过Google Play看到的错误相同的错误。

另一种选择,您可以在发布版本中禁用防护/缩小。但是,不建议这样做,因为您的应用程序会超出所需大小。

答案 3 :(得分:0)

我的应用遇到了同样的问题,这是ProGuard的杀手。

因为ProGuard会重命名所有类,除非另有说明。

因此,在您的情况下,您必须添加@Keep 类名MemeViewModel之前的注释。

示例

@Keep
class MemeViewModel{
//
//
}