  Despite continuous efforts to build and update network infrastructure, mobile
devices in developing regions continue to be constrained by limited bandwidth.
Unfortunately, this coincides with a period of unprecedented growth in the size
of mobile applications. Thus it is becoming prohibitively expensive for users
in developing regions to download and update mobile apps critical to their
economic and educational development. Unchecked, these trends can further
contribute to a large and growing global digital divide.
  Our goal is to better understand the source of this rapid growth in mobile
app code size, whether it is reflective of new functionality, and identify
steps that can be taken to make existing mobile apps more friendly bandwidth
constrained mobile networks. We hypothesize that much of this growth in mobile
apps is due to poor resource/code management, and do not reflect proportional
increases in functionality. Our hypothesis is partially validated by
mini-programs, apps with extremely small footprints gaining popularity in
Chinese mobile networks. Here, we use functionally equivalent pairs of
mini-programs and Android apps to identify potential sources of "bloat,"
inefficient uses of code or resources that contribute to large package sizes.
We analyze a large sample of popular Android apps and quantify instances of
code and resource bloat. We develop techniques for automated code and resource
trimming, and successfully validate them on a large set of Android apps. We
hope our results will lead to continued efforts to streamline mobile apps,
making them easier to access and maintain for users in developing regions.
