从 Google Play 下载时应用程序崩溃

And*_*los 1 android stack-trace google-play

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

更新

所以我得到了 APK 的堆栈跟踪。它告诉我我的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)
Run Code Online (Sandbox Code Playgroud)

Gre*_*ens 5

发生此类问题通常是因为您部署到 Google Play 的应用程序是发布版本,并且 proguard 缩小了您的应用程序并删除了不应包含的类。当您在 Android Studio 中构建时,它是一个不会被缩小的调试构建。这就是您只能从 Google Play 看到崩溃的原因。

在上传到 Google Play 之前,请在设备上测试您的发布 APK 文件并查看 logcat 是否有错误。这应该告诉您哪个类被错误删除,您可以通过指定自定义混淆器规则并重试直到应用程序停止崩溃来纠正该问题。然后当你上传到 Google Play 时,你应该就可以了。

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

另一种选择是,您可以在发布版本中禁用混淆/缩小。但是,不建议这样做,因为您的应用程序将比需要的更大。