New Software Streams Apps to Save Space on Your Phone

AppStreamer can reduce storage requirements for mobile games and other apps by 85 percent

3 min read
Illustration of a phone overstuffed with apps.
Illustration: Purdue University

The way we consume multimedia content has changed over time, and so has the technology that delivers it. What began as downloading evolved into streaming, with remote copies of audio or video files transmitted over the Internet in real time—eliminating the need for a local copy stored on a device.

But what if streaming could apply to mobile apps as well? That’s the idea behind AppStreamer [PDF], a new program designed to reduce app storage requirements through predictive streaming. The software was devised by a team of researchers from Prince of Songkla University in Thailand, Purdue University, University of Illinois at Urbana-Champaign, AT&T Labs Research, and Georgia Institute of Technology, with support from AT&T and the National Science Foundation.

“We want to consume more content on our devices, yet these devices are not as resource-rich as we want them to be,” says Saurabh Bagchi, a professor of electrical and computer engineering at Purdue University who led the research. “You also have parts of the world that can’t afford the latest smartphones, so how will you provide them with the ability to consume content? Streaming applications seemed like a logical progression.”

AppStreamer assumes devices don’t have the space to store everything locally, so it relies on cloud storage or storage “at the edge,” which means servers stationed closer to a network end point such as a telecom provider’s base station. 

When an app like a mobile game needs a resource—such as an image, video, or sound file—AppStreamer fetches that resource from the remote storage just before the app needs it. As a result, apps won’t need to save all their resources locally, minimizing their required storage. Moreover, when users install an app, they can start using it immediately even if it hasn’t fully downloaded.

AppStreamer works in the layer between the mobile app and the device’s operating system, requiring no changes to the app itself. “In fact, we don’t even need the source code of the mobile app,” Bagchi says. “The app can be considered as a binary black box, and we only look at the interactions it has with the operating system.”

A key part of AppStreamer’s functionality is predicting what resources an app will need and when those resources will be needed. To do that, AppStreamer employs machine learning, which begins with an offline training phase for a specific app to learn the probabilities of transitioning from one state to the next. The software only retrieves the resources for a particular state if that state has the highest likelihood of following the current state.

For instance, when navigating a mobile game’s fantasy world, players make their way from one island to the next in a continuous manner. “The machine learning part is able to predict this, and it knows all the resources that correspond to the next island,” Bagchi says. “It doesn’t need to fetch the resources for an island at the far end of the world. Only when the player gets close to that island will it need to fetch its resources.”

The team tested AppStreamer using Dead Effect 2, a first-person shooter game, and Fire Emblem Heroes, a turn-based tactical role-playing game. Results showed that AppStreamer provided the same gaming experience as when the entire game was stored on a smartphone for 70 percent of Dead Effect 2 players and 88 percent of Fire Emblem Heroes players. AppStreamer also reduced storage requirements by more than 85 percent for both games.

As with any application employing machine learning, accuracy and representation pose challenges. “Prediction is a hard job, and [with AppStreamer] we’re predicting an application’s behavior,” says Bagchi. “It’s a challenge to have enough data that’s representative of the different types of gamers to train the machine learning model, so [that] once AppStreamer is deployed in the field, it will be accurate.”

Bagchi envisions AppStreamer will be used not only in mobile gaming, but also across a broader range of applications. As he says, “Any application which has a large footprint in terms of memory and storage and uses only a small fraction of its overall functionality would be suitable for a technology like AppStreamer.”

The Conversation (0)

Why Functional Programming Should Be the Future of Software Development

It’s hard to learn, but your code will produce fewer nasty surprises

11 min read
Vertical
A plate of spaghetti made from code
Shira Inbar
DarkBlue1

You’d expectthe longest and most costly phase in the lifecycle of a software product to be the initial development of the system, when all those great features are first imagined and then created. In fact, the hardest part comes later, during the maintenance phase. That’s when programmers pay the price for the shortcuts they took during development.

So why did they take shortcuts? Maybe they didn’t realize that they were cutting any corners. Only when their code was deployed and exercised by a lot of users did its hidden flaws come to light. And maybe the developers were rushed. Time-to-market pressures would almost guarantee that their software will contain more bugs than it would otherwise.

Keep Reading ↓Show less
{"imageShortcodeIds":["31996907"]}