Imagine a world where you could test drive a car, play a game, or edit a photo without ever downloading an app. Enter the realm of Android Instant Apps, a revolutionary technology that lets users experience apps directly from their web browsers, without committing to the storage space or installation hassle. Android Instant Apps have revolutionized the way users interact with mobile applications by providing a seamless and lightweight experience without the need for installation.
In this blog, we’ll dive deep into the technical aspects of Android Instant Apps, exploring their inner workings, and shedding light on the architecture, development process, benefits, challenges, and key considerations for developers. Get ready to buckle up, as we peel back the layers of this innovative technology!
Understanding Android Instant Apps
Definition
Android Instant Apps are a feature of the Android operating system that allows users to run apps without installing them. Instead of the traditional download-install-open process, users can access Instant Apps through a simple URL or a link.
Working Under the Hood
So, how do Instant Apps work their magic? The key lies in Android App Bundles, a new app publishing format by Google. These bundles contain app modules, including a base module with core functionality and optional feature modules for specific features. Instant Apps consist of a slimmed-down version of the base module, along with any relevant feature modules needed for the immediate task.
When a user clicks on a “Try Now” button or a link associated with an Instant App, Google Play sends the required components to the user’s device. This data is securely contained in a sandbox, separate from other apps and the user’s storage. The device then runs the Instant App like a native app, providing a seamless user experience.
Architecture
The architecture of Android Instant Apps involves modularizing an existing app into smaller, independent modules known as feature modules. These modules are loaded on-demand, making the Instant App experience quick and efficient. The key components include:
- Base Feature Module: The core functionality of the app.
- Dynamic Feature Modules: This crucial mechanism allows for downloading additional features on-demand, even within the Instant App environment. This enables developers to offer richer experiences without burdening users with a large initial download.
- Android App Bundle: As mentioned earlier, these bundles are the foundation of Instant Apps. They provide flexible modularity and enable efficient delivery of app components. It’s a publishing format that includes all the code and resources needed to run the app.
- Instant-enabled App Bundle: This is a specific type of app bundle specially configured for Instant App functionality. It defines modules and their relationships, allowing Google Play to deliver the right components for the instant experience.
Development Process
Dependency declaration
implementation("com.google.android.gms:play-services-instantapps:17.0.0")
Preparing the App
To make an app instant-ready, developers need to modularize the app into feature modules. This involves refactoring the codebase to separate distinct functionalities into modules. The app is then migrated to the Android App Bundle format.
Specify the appropriate version codes
Ensure that the version code assigned to your app’s instant experience is lower than the version code of the installable app. This aligns with the expectation that users will transition from the Google Play Instant experience to downloading and installing the app on their device, constituting an app update in the Android framework.
Please note: if users have the installed version of your app on their device, that version will always take precedence over your instant experience, even if it’s an older version compared to your instant experience.
To meet user expectations on versioning, you can consider one of the following approaches:
- Begin the version codes for the Google Play Instant experience at 1.
- Increase the version code of the installable APK significantly, for example, by 1000, to allow sufficient room for the version number of your instant experience to increment.
If you opt to develop your instant app and installable app in separate Android Studio projects, adhere to these guidelines for publishing on Google Play:
- Maintain the same package name in both Android Studio projects.
- In the Google Play Console, upload both variants to the same application.
Note: Keep in mind that the version code is not user-facing and is primarily used by the system. The user-facing version name has no constraints. For additional details on setting your app’s version, refer to the documentation on versioning your app.
Modify the target sandbox version
Ensure that your instant app’s AndroidManifest.xml file is adjusted to target the sandbox environment supported by Google Play Instant. Implement this modification by incorporating the android:targetSandboxVersion attribute into the <manifest> element of your app, as illustrated in the following code snippet:
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
...
android:targetSandboxVersion="2" ...>
Security Sandbox: Instant Apps run in a secure sandboxed environment on the device, isolated from other apps and data. This protects user privacy and ensures system stability.
The android:targetSandboxVersion attribute plays a crucial role in determining the target sandbox for an app, significantly impacting its security level. By default, its value is set to 1, but an alternative setting of 2 is available. When set to 2, the app transitions to a different SELinux sandbox, providing a higher level of security.
Key restrictions associated with a level-2 sandbox include:
- The default value of usesCleartextTraffic in the Network Security Config is false.
- Uid sharing is not permitted.
For Android Instant Apps targeting Android 8.0 (API level 26) or higher, the attribute is automatically set to 2. While there is flexibility in setting the sandbox level to the less restrictive level 1 in the installed version of your app, doing so results in non-persistence of app data from the instant app to the installed version. To ensure data persistence, it is essential to set the installed app’s sandbox value to 2.
Once an app is installed, the target sandbox value can only be updated to a higher level. If there is a need to downgrade the target sandbox value, uninstall the app and replace it with a version containing a lower value for this attribute in the manifest.
Define instant-enabled app modules
To signify that your app bundle supports instant experiences, you can choose one of the following methods:
Instant-enable an existing app bundle with a base module:
- Open the Project panel by navigating to View > Tool Windows > Project in the menu bar.
- Right-click on your base module, commonly named ‘app’, and select Refactor > Enable Instant Apps Support.
- In the ensuing dialog, choose your base module from the dropdown menu and click OK. Android Studio automatically inserts the following declaration into the module’s manifest:
<manifest ... xmlns:dist="http://schemas.android.com/apk/distribution">
<dist:module dist:instant="true" />
...
</manifest>
Note: The default name for the base module in an app bundle is ‘app’.
Create an instant-enabled feature module in an existing app bundle with multiple modules:
If you already possess an app bundle with multiple modules, you can create an instant-enabled feature module. This not only instant-enables the app’s base module but also allows for supporting multiple instant entry points within your app.
Note: A single module can contain multiple activities. However, for an app bundle to be instant-enabled, the combined download size of the code and resources within all instant-enabled modules must not exceed 15 MB.
Integrating Seamless Sign-in for Instant Apps
Integrating Seamless Sign-in for Instant Apps
To empower your instant app experience with smooth and secure sign-in, follow these guidelines:
General Instant Apps:
- Prioritize Smart Lock for Passwords integration within your instant-enabled app bundle. This native Android feature allows users to sign in using saved credentials, enhancing convenience and accessibility.
Instant Play Games:
- Opt for Google Play Games Services sign-in as the ideal solution for your “Instant play” games. This dedicated framework streamlines user access within the gaming ecosystem, offering familiarity and a frictionless experience.
Note: Choosing the appropriate sign-in method ensures a seamless transition for users entering your instant app, eliminating login hurdles and boosting engagement.
Implement logic for instant experience workflows in your app
Once you have configured your app bundle to support instant experiences, integrate the following logic into your app:
Check whether the app is running as an instant experience
To determine if the user is engaged in the instant experience, employ the isInstantApp()
method. This method returns true if the current process is running as an instant experience.
Display an install prompt
If you are developing a trial version of your app or game and want to prompt users to install the full experience, utilize the InstantApps.showInstallPrompt()
method. The Kotlin code snippet below illustrates how to use this method:
class MyInstantExperienceActivity : AppCompatActivity {
// ...
private fun showInstallPrompt() {
val postInstall = Intent(Intent.ACTION_MAIN)
.addCategory(Intent.CATEGORY_DEFAULT)
.setPackage("your-installed-experience-package-name")
// The request code is passed to startActivityForResult().
InstantApps.showInstallPrompt(this@MyInstantExperienceActivity,
postInstall, requestCode, /* referrer= */ null)
}
}
Transfer data to an installed experience
When a user decides to install your app, ensure a seamless transition of data from the instant experience to the full version. The process may vary based on the Android version and the targetSandboxVersion
:
- For users on Android 8.0 (API level 26) or higher with a
targetSandboxVersion
of 2, data transfer is automatic. - If manual data transfer is required, use one of the following APIs:
- For devices running Android 8.0 (API level 26) and higher, utilize the Cookie API.
- If users interact with your experience on devices running Android 7.1 (API level 25) and lower, implement support for the Storage API. Refer to the sample app for guidance on usage.
By integrating these workflows, you elevate the user experience within your instant-enabled app bundle, enabling smooth transitions and interactions for users across various versions and platforms. This thoughtful implementation ensures that users engaging with your instant experience have a seamless and intuitive journey, whether they choose to install the full version, enjoy a trial, or transfer data between the instant and installed versions. Overall, these workflows contribute to a user-friendly and cohesive experience, accommodating different scenarios and preferences within your app.
Key Technical Considerations
App Links and URL Handling
For users to access the Instant App, developers need to implement URL handling. This involves associating specific URLs with corresponding activities in the app. Android Instant Apps use the ‘Android App Links’ mechanism, ensuring that links open in the Instant App if it’s available.
Dealing with Resource Constraints
Since Instant Apps are designed to be lightweight, developers must be mindful of resource constraints. This includes limiting the size of feature modules, optimizing graphics and media assets, and being cautious with background tasks to ensure a smooth user experience.
Security
Security is a critical aspect of Android Instant Apps. Developers need to implement proper authentication and authorization mechanisms to ensure that user data is protected. Additionally, the app’s modular architecture should not compromise the overall security posture.
Compatibility
Developers must consider the compatibility of Instant Apps with a wide range of Android devices and versions. Testing on different devices and Android versions is crucial to identify and address potential compatibility issues.
User Data and Permissions
Instant Apps should adhere to Android’s permission model. Developers need to request permissions at runtime and ensure that sensitive user data is handled appropriately. Limiting the use of device permissions to only what is necessary enhances user trust.
Deployment and Distribution
Publishing
Publishing an Instant App involves uploading the Android App Bundle to the Google Play Console. Developers can then link the Instant App with the corresponding installed app, ensuring a consistent experience for users.
Distribution
Instant Apps can be distributed through various channels, including the Play Store, websites, and third-party platforms. Developers need to configure their app links and promote the Instant App effectively to reach a broader audience.
Benefits of Instant Apps
- Increased Conversion Rates: By letting users try before they buy, Instant Apps can significantly boost app installs and engagement.
- Reduced Storage Requirements: Users don’t need to download the entire app, saving valuable storage space on their devices.
- Improved Discoverability: Instant Apps can be accessed through Google Play, search results, and website links, leading to wider app exposure.
- Faster App Delivery: Smaller initial downloads thanks to dynamic feature loading lead to quicker startup times and smoother user experiences.
Challenges
- Development Complexity: Creating well-functioning Instant Apps requires careful planning and modularization of app code.
- Limited Functionality: Due to size constraints, Instant Apps may not offer the full range of features as their installed counterparts.
- Network Dependence: Downloading app components during runtime requires a stable internet connection for optimal performance.
Despite the challenges, Android Instant Apps represent a significant step forward in app accessibility and user experience. As development tools and user adoption mature, we can expect to see even more innovative and engaging Instant App experiences in the future.
Conclusion
Android Instant Apps offer a novel approach to mobile app interaction, providing users with a frictionless experience. Understanding the technical aspects of Instant Apps is essential for developers looking to leverage this technology effectively. By embracing modularization, optimizing resources, and addressing security considerations, developers can create Instant Apps that deliver both speed and functionality. As the mobile landscape continues to evolve, Android Instant Apps represent a significant step towards more efficient and user-friendly mobile experiences.