Understanding System Images for AVDs

Innocencia Ndembera
5 min read3 days ago

--

In Android Studio, a system image is a crucial component of an Android Virtual Device (AVD). It essentially determines the version of the Android operating system that the emulator will run. Here’s a detailed explanation of what a system image is, why it’s important, and how to choose the right one for your needs.

What is a System Image?

System Image Definition: A system image is a snapshot of the Android operating system and associated components that run on your virtual device. It includes the Android OS version, pre-installed apps, and system libraries.

Components of a System Image:

  1. Android OS Version: The specific version of Android, such as Android 11 or Android 12.
  2. System Apps: Basic applications that come with Android, like the phone dialer, messaging app, and settings.
  3. System Libraries: Essential code that the OS uses to function, including support for various hardware features.

Why is the System Image Important?

  1. Testing Different Android Versions: You might need to test your app on different versions of Android to ensure compatibility. For example, features might behave differently in Android 10 compared to Android 12.
  2. Feature Compatibility: Some features or APIs (Application Programming Interfaces) are only available in specific versions of Android. Testing on the right system image ensures your app utilizes these features correctly.
  3. User Experience: Testing on various system images helps you see how your app performs and looks across different Android versions, improving the user experience for a wider audience.

Types of System Images

  1. Google APIs:
  • Definition: Includes Google’s proprietary APIs and services, like Google Maps and Google Play Services.
  • Use Case: Choose this if your app relies on Google-specific features or services.

2. Google Play:

  • Definition: Similar to Google APIs but includes the Google Play Store and other Google apps.
  • Use Case: Useful for testing apps that will be distributed via the Google Play Store, as it simulates a more realistic environment.

3. AOSP (Android Open Source Project):

  • Definition: This image includes the open-source version of Android without Google’s proprietary apps and services.
  • Use Case: Choose this for testing basic Android functionality or if your app does not rely on Google’s services.

4. Custom System Images:

  • Definition: These are custom configurations of Android OS created by device manufacturers or developers.
  • Use Case: Useful for testing on specific device models or configurations that are not covered by standard system images.

Choosing the Right System Image

  1. Determine Your Target Audience:
  • Example: If your app is targeting users who use Google services, choose a system image with Google APIs or Google Play.

2. Check App Requirements:

  • Example: If your app uses specific Android features available only in certain versions, select the system image with that Android version.

3. Consider Performance and Compatibility:

  • Example: Test on both the latest and older system images to ensure your app performs well across different versions of Android.

How to Select and Install a System Image in Android Studio

  1. Open AVD Manager:
  • Click on the AVD Manager icon (a phone with a green Android figure) in Android Studio.

2. Create a New Virtual Device:

  • Click “Create Virtual Device” and select a hardware profile.

3. Choose a System Image:

  • You’ll see a list of available system images. You can filter by Android version and other criteria.
  • Example: If you need to test Android 11, select a system image for Android 11.

4. Download and Install:

  • If the system image you want is not yet downloaded, click the “Download” link next to it.
  • Once downloaded, select the system image and click “Next.”

4. Finish Setup:

  • Complete the configuration of your virtual device and click “Finish.”

By understanding and choosing the right system image, you ensure that your app is tested in the most relevant environment, providing a smoother experience for your users.

Here are examples of Android system images, including their release names and corresponding Android versions:

Examples of System Images with Release Names

  1. API 35 (Android 14)
  • Release Name: Upside Down Cake
  • Description: Represents the latest version of Android, focusing on new features and updates.
  • Use Case: Ideal for testing apps on the most recent version of Android to ensure compatibility with the latest features and improvements.

2. API 34 (Android 13)

  • Release Name: Tiramisu
  • Description: This version introduced enhancements to notifications, security features, and improved multitasking.
  • Use Case: Useful for testing compatibility with recent updates and features introduced in Android 13.

3. API 33 (Android 12L)

  • Release Name: Snow Cone
  • Description: A version designed for large-screen devices like tablets and foldable phones, with enhancements for multi-window support.
  • Use Case: Essential for testing on devices with larger screens to ensure your app’s layout and features work well.

3. API 32 (Android 12)

  • Release Name: Red Velvet Cake
  • Description: Includes updates to privacy features, user interface enhancements, and improved performance.
  • Use Case: Test for compatibility with the latest Android 12 features and changes.

4. API 31 (Android 11)

  • Release Name: Raspberry Pie
  • Description: Focuses on privacy enhancements, app permissions, and improved user experience.
  • Use Case: Useful for ensuring your app supports privacy and security features introduced in Android 11.

4. API 30 (Android 10)

  • Release Name: Quince Tart
  • Description: Includes features like dark mode, enhanced privacy controls, and improved notifications.
  • Use Case: For testing apps on Android 10, checking compatibility with features like dark mode.

5. API 29 (Android 9)

  • Release Name: Pie
  • Description: Introduces gesture navigation, adaptive battery, and adaptive brightness.
  • Use Case: Test for compatibility with features introduced in Android 9.

6. API 28 (Android 8.1)

  • Release Name: Oreo
  • Description: Includes improvements like picture-in-picture mode and notification channels.
  • Use Case: Ensures your app works well with Android 8.1 features.

7. API 27 (Android 8.0)

  • Release Name: Oreo
  • Description: Introduces features such as adaptive icons and improved notifications.
  • Use Case: For testing app functionality on Android 8.0.

8. API 26 (Android 8.0)

  • Release Name: Oreo
  • Description: The same release name as Android 8.0, but includes incremental updates and bug fixes.
  • Use Case: Test compatibility with Android 8.0’s core features.

9. API 25 (Android 7.1)

  • Release Name: Nougat
  • Description: Includes features like split-screen multitasking and enhanced notifications.
  • Use Case: Useful for ensuring compatibility with features from Android 7.1.

10. API 24 (Android 7.0)

  • Release Name: Nougat
  • Description: Introduces split-screen multitasking and improved notifications.
  • Use Case: Test for compatibility with Android 7.0 features.

11. API 23 (Android 6.0)

  • Release Name: Marshmallow
  • Description: Features include improved battery life, app permissions, and Doze mode.
  • Use Case: Ensures your app works well with features introduced in Android 6.0.

12. API 22 (Android 5.1)

  • Release Name: Lollipop
  • Description: Includes material design improvements and enhanced notifications.
  • Use Case: For testing on devices running Android 5.1.

13. API 21 (Android 5.0)

  • Release Name: Lollipop
  • Description: Major update with material design and performance improvements.
  • Use Case: Ensures compatibility with Android 5.0 features.

Summary

Each release name corresponds to a specific version of Android and introduces new features, improvements, and changes. By selecting the appropriate system image, you can test your app’s compatibility with various Android versions, ensuring it performs well across different devices and operating system updates.

--

--

Innocencia Ndembera

As a software engineer and enthusiast, I share personal reflections and explore industry trends. Join me on this journey!