Table of Contents
Fetching ...

Recover as It is Designed to Be: Recovering from Compatibility Mobile App Crashes by Reusing User Flows

Donghwi Kim, Hyungjun Yoon, Chang Min Park, Sujin Han, Youngjin Kwon, Steven Y. Ko, Sung-Ju Lee

TL;DR

This paper tackles compatibility crashes in Android caused by OS version fragmentation and vendor customizations by proposing RecoFlow, a UI-driven crash recovery framework. RecoFlow lets developers encode recovery logic as user flows using a dedicated API and UFGen tool, replaying UI actions to restore the disrupted task after a crash. To prevent recurring crashes, it introduces a compatibility mode that runs apps inside a lightweight, virtualized compatibility OS, with minimal overhead and data sharing with the host OS. Evaluations with developers and users show that RecoFlow can effectively recover from crashes across diverse apps with small performance and memory overhead, offering a practical approach to mitigate fragmentation in the Android ecosystem.

Abstract

Android OS is severely fragmented by API updates and device vendors' OS customization, creating a market condition where vastly different OS versions coexist. This gives rise to compatibility crash problems where Android apps crash on certain Android versions but not on others. Although well-known, this problem is extremely challenging for app developers to overcome due to the sheer number of Android versions in the market that must be tested. We present RecoFlow, a framework for enabling app developers to automatically recover an app from a crash by programming user flows with our API and visual tools. RecoFlow tracks app feature usage with the user flows on user devices and recovers an app from a crash by replaying UI actions of the app feature disrupted by the crash. To prevent recurring compatibility crashes, RecoFlow executes a previously crashed app in compatibility mode that is enabled by our novel Android OS virtualization technique. Our evaluation with professional Android developers shows that our API and tools are easy to use and effective in recovering from compatibility crashes.

Recover as It is Designed to Be: Recovering from Compatibility Mobile App Crashes by Reusing User Flows

TL;DR

This paper tackles compatibility crashes in Android caused by OS version fragmentation and vendor customizations by proposing RecoFlow, a UI-driven crash recovery framework. RecoFlow lets developers encode recovery logic as user flows using a dedicated API and UFGen tool, replaying UI actions to restore the disrupted task after a crash. To prevent recurring crashes, it introduces a compatibility mode that runs apps inside a lightweight, virtualized compatibility OS, with minimal overhead and data sharing with the host OS. Evaluations with developers and users show that RecoFlow can effectively recover from crashes across diverse apps with small performance and memory overhead, offering a practical approach to mitigate fragmentation in the Android ecosystem.

Abstract

Android OS is severely fragmented by API updates and device vendors' OS customization, creating a market condition where vastly different OS versions coexist. This gives rise to compatibility crash problems where Android apps crash on certain Android versions but not on others. Although well-known, this problem is extremely challenging for app developers to overcome due to the sheer number of Android versions in the market that must be tested. We present RecoFlow, a framework for enabling app developers to automatically recover an app from a crash by programming user flows with our API and visual tools. RecoFlow tracks app feature usage with the user flows on user devices and recovers an app from a crash by replaying UI actions of the app feature disrupted by the crash. To prevent recurring compatibility crashes, RecoFlow executes a previously crashed app in compatibility mode that is enabled by our novel Android OS virtualization technique. Our evaluation with professional Android developers shows that our API and tools are easy to use and effective in recovering from compatibility crashes.
Paper Structure (22 sections, 9 figures, 3 tables)

This paper contains 22 sections, 9 figures, 3 tables.

Figures (9)

  • Figure 1: The user flow of mobile Firefox app's new password setting feature created by Firefox app developers MozillaC1:online. It describes required UI actions and their order for setting a password. (We omitted 3 out of 8 steps for readability.)
  • Figure 2: App development workflow with RecoFlow.
  • Figure 3: Automatic crash recovery with RecoFlow. Recovery logic, which is a user flow written in Java, classifies UI actions into user intents, and RecoFlow recovers an app by replaying UI actions of an intent disrupted by the crash.
  • Figure 4: The corresponding UI elements of UI actions included in the two stages in \ref{['sec:example_scenario']} are filled with red.
  • Figure 5: RecoFlow's compatibility mode app execution. RecoFlow effectively removes API mismatch by executing an app with compatible OS.
  • ...and 4 more figures