How to Start with Android Instant Apps? A tutorial for Android Devs
Instant apps is a new feature from Google on Android Platform. It allows using native apps instantly, without installation, which is why they don’t need device storage. It’s not some kind of a demo or trial, but a brand new function. In the following post, I’m going to tell you about some easy ways on how to get started with Android Instant Apps.
A developer has a number of tools designed for creating Instant Apps:
- Android Studio 3.0 with Instant App support
- Android Instant App SDK in SDK Manager
- App Links Assistant
- Emulator with Instant Apps support
When a developer creates a new project in Android Studio 3.0, he/she can simply check the checkbox with Instant Apps supporting. The project that supports instant apps has a different structure, meaning it’s based on modules. It contains:
- A core module with all common functionalities that are used in the whole project. It’s a base module for standard apps and instant apps
- Future modules, which are quite similar to library modules. One project can contain quite a few of them since a developer has to create a new module for every new feature. All future modules are based on a core one
- App module—It’s used for building standard app
- Instant module—It’s used for building instant app
Adding Android Instant apps is actually very simple. A developer has to install it from Android SDK Manager, which is located in the SDK Tools tab.
Instant apps uses Activity as an entry point via links. New Android Studio contains App Links Assistant tool that allows adding, removing and managing links in an easy way.
New Emulator shares a possibility to run instant apps locally in a development process. A developer can set the right link to activity in the run configuration.
Most parts of applications have a single-module structure which means that all the codes are in one module. Sometimes applications have some libraries in separated modules. According to clean architecture ideology, an application has to have separate modules for the view layer, presentation layer and domain layer. If someone wants to implement instant app in the existing project, he/she has to change the project structure. Instant apps requires all features to be in separate modules.
The presentation from last year’s Google I/O will guide you through the whole process. You can find here:
I’m going through this solution below.
It covers three steps:
- Adding links to the activities that should be the entry points
- Changing app module to core module and creating new app module and instant app module
- Extracting future modules from core module
Adding links is very easy thanks to App Links Assistant. A developer has to choose Activity and fill in the forms with information about link URLs, such as host and path.
As the next step, a developer has to change the existing app module to the core module. It can be done by modification build.gradle file. The first modification changes plugin from com.android.application to com.android.feature. The second modification is setting baseFeature flag on true.
Next, a developer can add two new modules. The first one is the app module and the second—instant app module. The important thing is to ad dependencies to core module in both standard and instant app.
The last step is all about extracting features to separated modules. These feature modules should be dependent on the core module.
Instant apps is a brand new solution from Google that can be easily introduced in Android Developers’ teams. I truly believe that it will be widely used and may even become obligatory in not so distant future.
Senior Software Engineer