簡體   English   中英

從 Google Play 下載時應用程序崩潰

[英]App crashes when downloaded from 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)

這種問題通常會發生,因為您部署到 Google Play 的應用程序是發布版本,並且 proguard 縮小了您的應用程序並刪除了它不應該具有的類。 當您在 Android Studio 中構建時,它是一個不會被縮小的調試構建。 這就是為什么您只能從 Google Play 看到崩潰的原因。

在上傳到 Google Play 之前,在設備上測試您的發行版 APK 文件並觀察 logcat 是否有錯誤。 這應該告訴您錯誤刪除了哪個類,您可以通過指定自定義 proguard 規則並重試直到應用程序停止崩潰來糾正該錯誤。 然后,當您上傳到 Google Play 時,您應該會很好。

您還可以通過更改 build.gradle 文件在調試版本中啟用 proguard。 然后,當您通過 Android Studio 運行時,您應該會看到與通過 Google Play 看到的相同的錯誤。

另一種選擇是,您可以在發布版本中禁用 proguard/minification。 但是,不建議這樣做,因為您的應用程序會比它需要的大。

檢查您是否有任何沒有訪問修飾符的 java 文件。 以我的經驗,僅僅聲明一個沒有公共或私有修飾符的類會導致這個問題。

我的應用程序遇到了同樣的問題,這是 ProGuard 殺死。 因為除非另有說明,否則 ProGuard 會重命名所有類。 所以,在你的情況下,你必須添加

@保持

類名MemeViewModel之前的注釋。

例子,

@Keep
class MemeViewModel{
//
//
}

在我的建議中,請在下載並嘗試打開手機時將手機連接到 PC/筆記本電腦。 在 android studio 上使用 Logcat,它大部分都有所有答案,或者至少有導致答案的錯誤。 嘗試將錯誤日志放在這里,以便我們可以正確查看它。

1) 嘗試通過 android studio 推送您在 Google Play 商店中部署的相同版本的應用程序,看看問題是否仍然存在!

2)如果發生同樣的事情,則在應用程序的入口點(大多數情況下在 MainActivity 類中的 onCreate 方法)上放置斷點,然后轉到 Run->Debug "YourProject" 選項,並為正在執行的每個命令進行逐步調試並查看哪一個導致問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM