# Profile an Android application with Arm Performance Studio

## In this learning path

- [Introduction](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/ams/)
- [Set up Arm Performance Studio](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/ams/ams/)
- [Set up an Android application for profiling](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/ams/setup_tasks/)
- [Interpret an example Arm Streamline report](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/ams/streamline_example/)
- [Use Arm Streamline to capture data for your application](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/ams/streamline/)
- [View an example Performance Advisor report](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/ams/pa_example/)
- [Create a Performance Advisor report for your application](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/ams/pa/)
- [Analyze your application with Frame Advisor](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/ams/fa/)
- [Debug your application with RenderDoc for Arm GPUs](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/ams/renderdoc/)
- [Analyze shader program performance with Mali Offline Compiler](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/ams/malioc/)
- [Next Steps](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/ams/_next-steps/)

## About this Learning Path

| Skill level:       | Introductory          |
|--------------------|-----------------------|
| Reading time:      | 1 hr                  |
| Last updated:      | 05 Aug 2026           |

| Author:            | Ronan Synnott, Arm [LinkedIn](https://linkedin.com/in/ronansynnott) |
|--------------------|-------------------------------------------------------------------|
| Arm IP:            | [Cortex-A](https://support.arm.com/?tab=compute-ip&Product%20Type=Application%20Processors), [Mali](https://support.arm.com/?tab=compute-ip&Product%20Type=Graphics%20Processors), [Immortalis](https://support.arm.com/?tab=compute-ip&Product%20Type=Graphics%20Processors) |
| Tags:              | [Performance and Architecture](https://learn.arm.com/tag/performance-and-architecture), [Android](https://learn.arm.com/tag/android), [Arm Performance Studio](https://learn.arm.com/tag/arm-performance-studio), [Arm Mobile Studio](https://learn.arm.com/tag/arm-mobile-studio) |

### Who is this for?
This is an introductory topic for Android application and games developers new to Arm Performance Studio.

### What will you learn?
Upon completion of this Learning Path, you will be able to:
- Capture a Streamline profile from a debuggable Android application
- Generate and inspect a Performance Advisor report
- Capture and analyze a frame with Frame Advisor and RenderDoc for Arm GPUs
- Use Mali Offline Compiler to estimate shader cost

### Prerequisites
Before starting, you will need the following:
- An Android device.
- A debuggable build of your application built with OpenGL ES versions 2.0 to 3.2, or Vulkan versions 1.0 to 1.2.
- For OpenGL ES applications, your device must be running Android 10 or later.
- For Vulkan applications, your device must be running Android 9 or later.
- Arm Performance Studio installed. Follow the [Arm Performance Studio install guide](https://learn.arm.com/install-guides/ams/) for instructions.
- Android SDK Platform tools installed for the Android Debug bridge (adb).

### Summary
You’ll profile an Android graphics application on Arm Mali-based GPUs using Arm Performance Studio. After preparing a debuggable build, you’ll connect an Android device over `adb`. Then, you’ll explore a provided Streamline sample to understand the available views, capture a profile from your own application, and generate a Performance Advisor report with the CLI. You’ll also perform frame-level inspection with Frame Advisor and RenderDoc for Arm GPUs, and use Mali Offline Compiler to estimate shader cost. By the end, you’ll understand how to progress from example data to capturing on-device profiles and interpreting reports that inform deeper frame and shader analysis.

### Frequently asked questions
<details>
<summary>How do I launch Streamline and select my Android device?</summary>
Open the Performance Studio Hub and launch Streamline. In the Start view, choose Android (adb) as the device type and select your device from the list.
</details>

<details>
<summary>What should I check in my app build before profiling with Streamline?</summary>
Build a debuggable version and include options that facilitate call stack unwinding by Streamline. For Unity, enable Development Build in Build settings.
</details>

<details>
<summary>What steps import the example Streamline capture?</summary>
In Streamline, select File > Import, choose Import Streamline Sample Captures, then select the Android example and finish. The sample capture is added so you can open it and explore the views.
</details>

<details>
<summary>How do I generate a Performance Advisor report from a capture?</summary>
Open a terminal, navigate to the capture location, and run streamline-cli with the -pa option on the .apc file (for example, “Android - GPU Bound Example.apc”). The capture is processed and a Performance Advisor report is produced.
</details>

<details>
<summary>Do I need Python for Performance Advisor?</summary>
Yes. Performance Advisor uses a Python script to connect to your device and requires Python 3.8 or later.
</details>
