MuntashirAkon / AppManager

A full-featured package manager and viewer for Android
https://muntashirakon.github.io/AppManager/
Other
4.91k stars 277 forks source link

Crash | ApkFile not found #658

Closed shuvashish76 closed 1 year ago

shuvashish76 commented 2 years ago

Describe the bug Crash while updating an app from F-Droid app. Intermittent crash.

Crash logs

java.lang.IllegalArgumentException: ApkFile not found for key -1561787060
    at io.github.muntashirakon.AppManager.apk.ApkFile.getInstance(ApkFile.java:89)
    at io.github.muntashirakon.AppManager.apk.installer.PackageInstallerService.onHandleIntent(PackageInstallerService.java:125)
    at io.github.muntashirakon.AppManager.types.ForegroundService$ServiceHandler.handleMessage(ForegroundService.java:40)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:164)
    at android.os.HandlerThread.run(HandlerThread.java:65)
Device Info App version: 2.6.5.1 App version code: 397 Android build version: 8704X_S001025_190606_ROW Android release version: 8.1.0 Android SDK version: 27 Android build ID: TB-8704X_S001025_190606_ROW Device brand: Lenovo Device manufacturer: LENOVO Device name: TB-8704X Device model: Lenovo TB-8704X Device product name: TB-8704X Device hardware name: qcom ABIs: [arm64-v8a, armeabi-v7a, armeabi] ABIs (32bit): [armeabi-v7a, armeabi] ABIs (64bit): [arm64-v8a] System language: en-IN In-App Language: auto Mode: auto
MuntashirAkon commented 2 years ago

For some reason, the underlying APK file was deleted before AM could install it. No idea how it could have happened 🤷‍♂️

Bugaddr commented 2 years ago

IMG_20220215_024810_355

Are this somewhat related, iam also not able to install the app

MuntashirAkon commented 2 years ago

Are this somewhat related, iam also not able to install the app

Which mode of operation?

Bugaddr commented 2 years ago

Sorry, forgot to mention this happended while installing app. But seems like its fixed in latest debug build.

MuntashirAkon commented 2 years ago

It doesn't seem to producible any more, or at least I haven't received any related crash reports in the last few months.

shuvashish76 commented 2 years ago

Steps to reproduce

(IIRC, I didn't clear cache of F-Droid last time but this is the closest thing to reproduce similar crash)

Expected behavior AM should show apk file not found error/warning instead of crashing.

Crash logs

java.lang.RuntimeException: Unable to start activity ComponentInfo{io.github.muntashirakon.AppManager/io.github.muntashirakon.AppManager.apk.installer.PackageInstallerActivity}: java.lang.IllegalArgumentException: ApkFile not found for key -1457789227
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2781)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2859)
    at android.app.ActivityThread.-wrap11(Unknown Source:0)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1592)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6518)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
 Caused by: java.lang.IllegalArgumentException: ApkFile not found for key -1457789227
   at io.github.muntashirakon.AppManager.apk.ApkFile.getInstance(ApkFile.java:101)
   at io.github.muntashirakon.AppManager.apk.splitapk.SplitApkChooser.onCreateDialog(SplitApkChooser.java:75)
   at androidx.fragment.app.DialogFragment.prepareDialog(DialogFragment.java:644)
   at androidx.fragment.app.DialogFragment.onGetLayoutInflater(DialogFragment.java:558)
   at androidx.fragment.app.Fragment.performGetLayoutInflater(Fragment.java:1654)
   at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:493)
   at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:282)
   at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:112)
   at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1647)
   at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3128)
   at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:3072)
   at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:251)
   at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:502)
   at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:248)
   at io.github.muntashirakon.AppManager.BaseActivity.onStart(BaseActivity.java:134)
   at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1335)
   at android.app.Activity.performStart(Activity.java:7043)
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2744)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2859)
   at android.app.ActivityThread.-wrap11(Unknown Source:0)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1592)
   at android.os.Handler.dispatchMessage(Handler.java:106)
   at android.os.Looper.loop(Looper.java:164)
   at android.app.ActivityThread.main(ActivityThread.java:6518)
   at java.lang.reflect.Method.invoke(Native Method)
   at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Device Info App version: **3.0.2** App version code: 413 Android build version: 8704X_S001025_190606_ROW Android release version: 8.1.0 Android SDK version: 27 Android build ID: TB-8704X_S001025_190606_ROW Device brand: Lenovo Device manufacturer: LENOVO Device name: TB-8704X Device model: Lenovo TB-8704X Device product name: TB-8704X Device hardware name: qcom ABIs: [arm64-v8a, armeabi-v7a, armeabi] ABIs (32bit): [armeabi-v7a, armeabi] ABIs (64bit): [arm64-v8a] System language: en-IN In-App Language: auto Mode: adb_tcp Inferred Mode: ADB
MuntashirAkon commented 2 years ago
  • Again try to install the same app from Aurora via AM

Did you open it directly via App Manager's installer or via App Details page?

shuvashish76 commented 2 years ago

Both installer & app info

https://user-images.githubusercontent.com/48226312/195764886-9e7abfbb-c7ff-4270-906f-b58f4d7c6e9d.mp4

MuntashirAkon commented 2 years ago

Hmm, this is one of the complicated issues and I think I have discovered the underlying problem that is causing it.

When you're force-stopping Aurora Store, App Manager, for some reason, is being stopped too. This is causing the ApkFile to no longer exist because of how lifecycle of an app in Android works. The solution to this problem is a bit complicated so do not expect a fix any time soon.

MuntashirAkon commented 1 year ago

@shuvashish76 Can you check again?

shuvashish76 commented 1 year ago

Same crash with v3.1.0-rc01-DEBUG 420

logs ``` java.lang.RuntimeException: Unable to start activity ComponentInfo{io.github.muntashirakon.AppManager.debug/io.github.muntashirakon.AppManager.apk.installer.PackageInstallerActivity}: java.lang.IllegalArgumentException: ApkFile not found for key 977001624 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2781) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2859) at android.app.ActivityThread.-wrap11(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1592) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6518) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) Caused by: java.lang.IllegalArgumentException: ApkFile not found for key 977001624 at io.github.muntashirakon.AppManager.apk.ApkFile.getInstance(ApkFile.java:105) at io.github.muntashirakon.AppManager.apk.splitapk.SplitApkChooser.onCreateDialog(SplitApkChooser.java:75) at androidx.fragment.app.DialogFragment.prepareDialog(DialogFragment.java:644) at androidx.fragment.app.DialogFragment.onGetLayoutInflater(DialogFragment.java:558) at androidx.fragment.app.Fragment.performGetLayoutInflater(Fragment.java:1654) at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:493) at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:282) at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:112) at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1647) at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3128) at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:3072) at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:251) at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:502) at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:251) at io.github.muntashirakon.AppManager.BaseActivity.onStart(BaseActivity.java:165) at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1335) at android.app.Activity.performStart(Activity.java:7043) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2744) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2859) at android.app.ActivityThread.-wrap11(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1592) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6518) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) Device Info: App version: 3.1.0-rc01-DEBUG App version code: 420 Android build version: 8704X_S001025_190606_ROW Android release version: 8.1.0 Android SDK version: 27 Android build ID: TB-8704X_S001025_190606_ROW Device brand: Lenovo Device manufacturer: LENOVO Device name: TB-8704X Device model: Lenovo TB-8704X Device product name: TB-8704X Device hardware name: qcom ABIs: [arm64-v8a, armeabi-v7a, armeabi] ABIs (32bit): [armeabi-v7a, armeabi] ABIs (64bit): [arm64-v8a] System language: en-IN In-App Language: auto Mode: auto Inferred Mode: no_root ``` ``` java.lang.IllegalArgumentException: ApkFile not found for key -1364626038 at io.github.muntashirakon.AppManager.apk.ApkFile.getInstance(ApkFile.java:105) at io.github.muntashirakon.AppManager.apk.splitapk.SplitApkChooser.onCreateDialog(SplitApkChooser.java:75) at androidx.fragment.app.DialogFragment.prepareDialog(DialogFragment.java:644) at androidx.fragment.app.DialogFragment.onGetLayoutInflater(DialogFragment.java:558) at androidx.fragment.app.Fragment.performGetLayoutInflater(Fragment.java:1654) at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:493) at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:282) at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:112) at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1647) at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3128) at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:3072) at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:251) at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:502) at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:251) at io.github.muntashirakon.AppManager.BaseActivity.onStart(BaseActivity.java:165) at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1457) at android.app.Activity.performStart(Activity.java:8259) at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3776) at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221) at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201) at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2311) at android.os.Handler.dispatchMessage(Handler.java:111) at android.os.Looper.loopOnce(Looper.java:238) at android.os.Looper.loop(Looper.java:357) at android.app.ActivityThread.main(ActivityThread.java:8090) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1026) Device Info: App version: 3.1.0-rc01-DEBUG App version code: 420 Android build version: c0d7f-cd476e Android release version: 12 Android SDK version: 31 Android build ID: S2RUBS32.51-15-9-3 Device brand: motorola Device manufacturer: motorola Device name: corfur Device model: moto g71 5G Device product name: corfur_g Device hardware name: qcom ABIs: [arm64-v8a, armeabi-v7a, armeabi] ABIs (32bit): [armeabi-v7a, armeabi] ABIs (64bit): [arm64-v8a] System language: en-IN In-App Language: auto Mode: auto Inferred Mode: no_root ```
shuvashish76 commented 1 year ago

Found another way to reproduce the crash. Latest AM Debug v3.2.0-alpha01 Run#2443

Steps to reproduce

  1. Force stop & fresh open AM
  2. Open App Info page of any app > Click back quickly
  3. Follow step2 multiple times
  4. AM crashes

(Reproduciable easily if all of your device animations set to off)

Details **Crash Logs:** ``` java.lang.RuntimeException: java.lang.IllegalArgumentException: ApkFile not found for key 926152046 at io.github.muntashirakon.AppManager.details.info.AppInfoViewModel.lambda$loadAppInfo$3(AppInfoViewModel.java:330) at io.github.muntashirakon.AppManager.details.info.AppInfoViewModel$$ExternalSyntheticLambda1.run(Unknown Source:2) at android.os.Handler.handleCallback(Handler.java:978) at android.os.Handler.dispatchMessage(Handler.java:104) at android.os.Looper.loopOnce(Looper.java:238) at android.os.Looper.loop(Looper.java:357) at android.app.ActivityThread.main(ActivityThread.java:8090) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1026) Caused by: java.lang.IllegalArgumentException: ApkFile not found for key 926152046 at io.github.muntashirakon.AppManager.apk.ApkFile.getInstance(ApkFile.java:103) at io.github.muntashirakon.AppManager.details.info.AppInfoViewModel.loadAppInfo(AppInfoViewModel.java:271) at io.github.muntashirakon.AppManager.details.info.AppInfoFragment.loadPackageInfo(AppInfoFragment.java:1692) at io.github.muntashirakon.AppManager.details.info.AppInfoFragment.$r8$lambda$oxlKbqiAsxIkEG69gntC-jrgnXk(Unknown Source:0) at io.github.muntashirakon.AppManager.details.info.AppInfoFragment$$ExternalSyntheticLambda82.run(Unknown Source:2) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:463) at java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637) at java.lang.Thread.run(Thread.java:1012) Device Info: App version: 3.2.0-alpha01-DEBUG App version code: 433 Android build version: 8049b-fa5cf Android release version: 12 Android SDK version: 31 Android build ID: S2RUBS32.51-15-9-7 Device brand: motorola Device manufacturer: motorola Device name: corfur Device model: moto g71 5G Device product name: corfur_g Device hardware name: qcom ABIs: [arm64-v8a, armeabi-v7a, armeabi] ABIs (32bit): [armeabi-v7a, armeabi] ABIs (64bit): [arm64-v8a] System language: en-IN In-App Language: auto Mode: auto Inferred Mode: ADB ``` **Additional context** ![AM_-27-06-23](https://github.com/MuntashirAkon/AppManager/assets/48226312/67886291-1655-489a-a1ec-bd69fc28bc61) Not sure if it's related to this issue. Hide this comment if it's a different one, I'll create another issue. Thanks.
Wojtaz0w commented 1 year ago

Found another way to reproduce the crash. Latest AM Debug v3.2.0-alpha01 Run#2443

Steps to reproduce

  1. Force stop & fresh open AM
  2. Open App Info page of any app > Click back quickly
  3. Follow step2 multiple times
  4. AM crashes

(Reproduciable easily if all of your device animations set to off)

Details **Crash Logs:** ``` java.lang.RuntimeException: java.lang.IllegalArgumentException: ApkFile not found for key 926152046 at io.github.muntashirakon.AppManager.details.info.AppInfoViewModel.lambda$loadAppInfo$3(AppInfoViewModel.java:330) at io.github.muntashirakon.AppManager.details.info.AppInfoViewModel$$ExternalSyntheticLambda1.run(Unknown Source:2) at android.os.Handler.handleCallback(Handler.java:978) at android.os.Handler.dispatchMessage(Handler.java:104) at android.os.Looper.loopOnce(Looper.java:238) at android.os.Looper.loop(Looper.java:357) at android.app.ActivityThread.main(ActivityThread.java:8090) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1026) Caused by: java.lang.IllegalArgumentException: ApkFile not found for key 926152046 at io.github.muntashirakon.AppManager.apk.ApkFile.getInstance(ApkFile.java:103) at io.github.muntashirakon.AppManager.details.info.AppInfoViewModel.loadAppInfo(AppInfoViewModel.java:271) at io.github.muntashirakon.AppManager.details.info.AppInfoFragment.loadPackageInfo(AppInfoFragment.java:1692) at io.github.muntashirakon.AppManager.details.info.AppInfoFragment.$r8$lambda$oxlKbqiAsxIkEG69gntC-jrgnXk(Unknown Source:0) at io.github.muntashirakon.AppManager.details.info.AppInfoFragment$$ExternalSyntheticLambda82.run(Unknown Source:2) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:463) at java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637) at java.lang.Thread.run(Thread.java:1012) Device Info: App version: 3.2.0-alpha01-DEBUG App version code: 433 Android build version: 8049b-fa5cf Android release version: 12 Android SDK version: 31 Android build ID: S2RUBS32.51-15-9-7 Device brand: motorola Device manufacturer: motorola Device name: corfur Device model: moto g71 5G Device product name: corfur_g Device hardware name: qcom ABIs: [arm64-v8a, armeabi-v7a, armeabi] ABIs (32bit): [armeabi-v7a, armeabi] ABIs (64bit): [arm64-v8a] System language: en-IN In-App Language: auto Mode: auto Inferred Mode: ADB ``` **Additional context** ![AM_-27-06-23](https://github.com/MuntashirAkon/AppManager/assets/48226312/67886291-1655-489a-a1ec-bd69fc28bc61) Not sure if it's related to this issue. Hide this comment if it's a different one, I'll create another issue. Thanks.

Thats how i got this error today. Sorry for creating a duplicate

MuntashirAkon commented 1 year ago

Should be fixed via fcab6e6bcc91390a88c63623278da38c933dabb8

shuvashish76 commented 1 year ago

This crash still happens in v3.1.2 stable release but not in alpha release.

MuntashirAkon commented 1 year ago

This crash still happens in v3.1.2 stable release but not in alpha release.

Milestone says 4.0.0-alpha01, not v3.1.2 or earlier. So, it's expected.