Site Optimized for Chrome and Firefox
Site Optimized for Chrome and Firefox
Site Optimized for Chrome and Firefox
Site Optimized for Chrome and Firefox
The MMS API was deprecated on July 29, 2015. Get more information about our supported APIs.
/apis/sms-mms /apis/mms/docs
The Device Capabilities API was deprecated on July 29, 2015. Get more information about our supported APIs.
/apis/device-capabilities /apis/device-capabilities/docs
1. Overview

AT&T Application Resource Optimizer (ARO) is a free, open-source tool for developers and testers that provides recommendations to optimize the performance of mobile web applications, make battery usage more efficient, and reduce data usage.

AT&T ARO is made up of two parts, the Data Collector and the Data Analyzer. The Data Collector captures video, data, and device traces of your interaction with your app and websites. The Data Analyzer benchmarks these traces, as well as PCAP files from other testing tools, against 24 Mobile Best Practices and pinpoints specific Best Practices that will improve your performance. The Mobile Best Practices have been shown to dramatically improve app and website performance – example optimizations include caching and managing network connections.

AT&T ARO complements standard functional and user-based testing as part of any quality assurance program. We recommend that you execute a set of standardized tests such as AQuA’s Testing Criteria while using ARO to qualify your product for readiness.

2. Best Practices
The following Suggested Best Practices documents are reinforced by the Best Practice tests in AT&T ARO, and are organized in the same categories.

File Download: These documents provide recommendations for cache management, reducing duplicate content, and compressing and managing the way you download files. By reducing the usage of the network for file downloads, you can reduce the battery consumption of your app.

Connections: These documents provide recommendations for efficiently managing TCP connections. By optimizing how you use the device's radio, you can speed the delivery of content and reduce the battery consumption of your app.

HTML: These documents provide recommendations for optimizing the handling of external files in your HTML. Optimizing your HTTP connectivity can further reduce your application's battery consumption.

Other: Reducing the usage of device peripherals can further reduce the battery consumption of your app.

General Topics: These documents provide background on the LTE and 3G energy models and optimizing your app for mobile devices.

3. System Requirements
Before you download AT&T ARO, make sure you meet the following system requirements for your operating system:
Windows 7, Windows 8, or Windows 10
  • At least 2GB of RAM
  • Java 7 or above
  • For Android developers, Android SDK Level 19 or above
  • WinPcap (considered the industry-standard windows packet capture library)
  • FFmpeg
Mac OS X 10.6 and above
  • At least 2GB of RAM
  • Java 7 or above
  • For iOS developers, use Xcode 8

4. Installation

To install onto your computer, download the latest copy of AT&T ARO and follow the installation instructions.

You can find the ARO Analyzer available for three platforms:

  • Windows 32 bit
  • Windows 64 bit
  • Mac OS X

5. Using the Data Analyzer
The heart of AT&T ARO is the Data Analyzer. It takes the trace data collected from your app, evaluates it against the ARO Best Practices tests, and presents the results in the form of diagnostics and statistics that provide a layered view into the performance of your app. The quickest way to get started with AT&T ARO is to download a sample trace, open it in the Data Analyzer, and review the ARO Best Practice test results.
Sample Traces
Use the following Sample Traces to get started quickly with the AT&T ARO Data Analyzer. Each of these traces demonstrates an application issue that can be discovered using AT&T ARO.

1. Inefficient Content Caching

2. Inefficient closing of TCP Connections

3. Inefficient Spacing of Periodic Pings

Starting the Analysis
As soon as you open a trace file in the AT&T ARO Data Analyzer, it will begin its trace analysis by evaluating the data against a set of recommended best practices. Once the analysis is complete, the Data Analyzer will automatically display the results. Note: The time that it takes the Data Analyzer to complete the analysis depends on the size of the trace.
Reviewing AT&T ARO Results
The best place to start reviewing AT&T ARO’s test results is in AT&T ARO’s Best Practices / Results tab. This tab contains a high-level overview of the results. When AT&T ARO runs an analysis of your trace, it evaluates the trace, it evaluates the trace data against a set of Best Practices benchmarks for over 20 distinct tests. If your trace’s data does not fall within the range of one of these benchmarks, it fails AT&T ARO’s test. The suggested best practices tests are categorized into four types: File Download, Connections, HTML, and Other.
  • If all of the best practice tests in a category pass, the whole category passes.
  • If one best practice test in a category fails, the whole category fails.
At the bottom of the AT&T ARO Best Practices / Results tab you’ll find a section called ‘Tests Conducted’. This is a summary of how your trace performed for each of AT&T ARO’s Best Practices tests. By scrolling further down the tab, you will see detailed information about each test result, including a Learn More link that will take you to a Best Practices document which examines the development practice that is being tested in detail. Each failed result contains specific information that includes a hyper linked word or phrase. By clicking on this link, you will be taken to a specific location in the Overview tab or Diagnostics tab that has more detailed results corresponding to the failure. For more information that describes each of the suggested best practices tests that are used to evaluate an application, and provides examples to help you interpret the detailed results generated by AT&T ARO, see the AT&T ARO Analysis Guide.

6. Collecting Data
The following sections describe how to collect trace data by testing on the following device platforms.

Testing Android Devices
Testing a Rooted or Non-Rooted Android Device
AT&T ARO provides the following methods for collecting data from an app that is running on a non-rooted Android device:

VPN Implementation:
Connect the device to a computer running AT&T ARO, select the Start Collector option, and an ARO VPN is installed on the device which allows for the capture of HTTP and UDP packet data requests before they are sent, and responses when they are received.
  • A clean, non-rooted Android device running Android 4.4 or above.
  • The Android SDK must be installed on the computer (this allows use of the ADB bridge).
  • The device must be connected to the computer via USB and detected by adb. Ensure the right device driver is installed. A USB driver installed that matches the Android test device. For example, Samsung devices may require the installation of Samsung Kies, and HTC devices may require the installation of HTC Sync Manager. Consult your device manufacturer's support website for the latest USB driver, and for driver installation instructions that apply to your device.
  • We recommended that you test with a "clean" device that has only the test app running.
Collecting the Trace:
  • Open the ARO Data Analyzer on the computer and from the Data Collection menu, select the Start Collector option. Note: If the connected device is a Samsung Galaxy S5, click OK on the warning message to continue.
  • Enter a name for the trace in the dialog box and click OK.
  • The first time a trace is captured using this method, a VPN Connection request screen will appear on the device. Click OK on the request screen to acknowledge that you trust the ARO VPN. For subsequent traces, the screen will briefly display and you will not need to acknowledge it.
  • Click Start to begin collecting a trace.
  • Test the app on the device, and when testing is completed, click the Stop button on the Live screen capture window you see on your computer.
  • The trace file is pulled to the computer and opened automatically in the AT&T ARO Data Analyzer. Note: Traces are saved in the default folder "AROTraceAndroid" that is located in the User directory of your computer.
Testing iOS Devices
AT&T ARO allows you to collect trace data from an application that is running on an iOS device. You can capture packet data, device information, and a video of the trace from the device to a Mac computer and analyze the trace using the ARO Data Analyzer.
To collect data from an iOS device using the AT&T ARO Data Collector, you’ll need the following:
  • An iPhone with iOS 7 and above.
  • A Mac computer running OS X 10.10 and above for which you have administrator rights or a Sudo password.
  • Latest XCode version installed on the computer.
  • The device must be enabled for development. For more information, see Enabling a Device for Development in the AT&T ARO User Guide.
Collecting the Trace
Use the following procedure to collect a trace from an iOS device using the ARO Data Collector.
  • 1. Open the ARO Data Analyzer on the computer and select the Start Collector option. Note: The ARO Data Analyzer will prompt for a Sudo password once during each session. If the ARO Data Analyzer is closed, you will be prompted for the password the next time that the ARO Data Analyzer is started.
  • 2. When data collection begins on the device, test the application and then select the Stop Collector option on the Data Collection menu. Ensure that the device remains connected to the computer while the app is being tested and the Data Collector is running.
  • 3. Select the Pull Traces option on the Data Collection menu and the trace folder will be saved to the default location on the computer.

Note: The default location for ARO trace folders on a Mac computer are as follows (where –user-name- is the login name for each computer user):
>>> /Users/–user-name-/AROTraceIOS (for IOS data)
>>> /Users/–user-name-/AROTraceAndroid (for Android data)

Once the trace folder is saved to your computer, you are ready to perform analysis on the trace using the AT&T ARO Data Analyzer

Testing with an Android Emulator (Android Virtual Device)
Android Emulator allows you to test your Android application in an emulated environment on your computer. The AT&T ARO Data Analyzer can interface directly with the Emulator and collect traces from it, just like it does on a device. The advantage is that you can test anytime, without a device of your own, but the disadvantage is that you are not really running your tests on a wireless network.
To run tests using Android Emulator, you'll need:
Pro Tip: When setting up an Android Virtual Device for the Emulator, you may wish to use the following settings to optimize the speed of your Emulator:
  • Enable a 1GB (1024MB) Secure Digital (SD) card
  • Maximize the amount of RAM that the Emulator is allowed to use.
(You will notice an improvement in the speed of the Emulator when you allocate 500MB of RAM or greater.)
Collecting the Trace
Launch the Android Emulator from the command line by typing the following:
emulator –avd {emulatorname}
Note: You can also launch the Emulator from the Eclipse Integrated Developer Environment (IDE), by opening the Android SDK Manager window, selecting your Emulator, and clicking 'Start'.
  • Launch AT&T ARO
  • Click 'Data Collector' in the main menu of AT&T ARO, and click 'Start Collector'.
  • Enter a name for the trace folder (or accept the default name), using alphanumeric letters only. Click 'OK'.
  • Open your application in the Emulator, and begin testing.
  • When you have finished testing, go back to AT&T ARO and click 'Stop Collector'. Click 'OK' to complete collecting the trace.
Once the trace folder is saved to your computer, you are ready to perform analysis on the trace using the AT&T ARO Data Analyzer

7. Effective Testing

To get the most informative test results from AT&T ARO, it’s important to capture trace data that represents how your users really use your app.

To do this, you need a clear testing strategy that takes the following issues into account:

  • Your app’s major user types and user behaviors.
  • How quickly or slowly users execute functions in your app.
  • The features of your app that generate the most network activity.
  • Other applications and device peripherals your app uses.

When using the AT&T ARO Data Collector, it’s important to capture these different scenarios in separate traces. Organizing your testing strategy into distinct user scenarios and collecting traces for each of them will make it easier to narrow down areas that you’d like to improve.

In general, when testing any scenario with AT&T ARO, you should always collect one trace each of the following distinct states:

Active Scenario:
Use your app for 20 minutes the same way your users would. Even better, enlist a friend to use your app on your test device, while you document the timing and execution of the functions they use.

Idle Scenario:
Launch your app and leave it idle for 30 minutes.

The idle trace is a bit like the control of your testing experiment — it helps you gauge the amount of baseline network activity and battery use that your app generates independent of using the app itself.

For more information about planning and testing user scenarios, including scenarios for specific app types, see the following tutorials and guides.

Sample Apps

The following sample app is provided so that you can get started testing and analyzing with AT&T ARO right away.

Just follow the instructions to download and install the Network Behavior Modification sample app on your Android device, then use the AT&T ARO Data Collector to capture trace files from the app while you test it. Once you have a trace file captured, refer to the AT&T ARO Analysis Guide to learn how to interpret the results in the ARO Data Analyzer.

About the Network Behavior Modification App
The Network Behavior Modification sample app allows you to perform a before-and-after test on three commonly used pieces of app functionality that frequently cause an app to be inefficient:

1.     Using a flexible (flex) ping or using a fixed ping
2.     Utilizing caching or not utilizing caching
3.     Closing connections explicitly or leaving it up to the device operating system to close them

By capturing traces in the ARO Data Collector with these three features turned on or off and analyzing the results in the ARO Data Analyzer, you will be able to test the most efficient approach to handling this functionality.

Download the App
Click the following link to download the sample app: Network Behavior Modification

Installing the App
To install this sample app on your Android device, use one of the following two methods:
Note: In some cases, you may need to select Settings > Security > Unknown sources to allow the installation of apps from sources outside of the onboard Play store.
  • Install the app directly. Copy the file to your Android device and click on it using a file manager tool.
  • Install the app via ADB. In a terminal window, browse to the folder with the APK file. With your device connected via USB (And USB debugging turned on), type: adb install ‹filename
Using the App
When the Network Behavior Modification app is started, you will see the following screen:

Figure 1: The start up screen of the Network Behavior Modification app.

From the start up screen (the only UI in the app) you can configure each of the three types of network behavior functionality and then click the Start! button to launch the app. The app will continue to run until you click the Stop! button.

Fixed Ping vs. Flex Ping
The only function the app performs is to download a photo every x seconds (where x is user definable) from Photobucket. For example, in figure 1, x=60 and Fixed Ping is selected. This means that every 60-61 seconds, the app will go to Photobucket and download a picture. You can change x (the Fixed Ping interval) to any value.

The alternative to a Fixed Ping is a Flex Ping. On cellular (note that Fixed Ping does not work over Wi-Fi, only cellular), the Android function PhoneStateListener.LISTEN_DATA_ACTIVITY listens to see if the radio is on. Using the settings in figure 1, the listener function begins at 30 seconds after the last image was downloaded. Should the radio turn on (from another application), the Network Behavior Modification app piggybacks the data usage, and downloads the image early. The exact time of the download will be displayed in the app. The difference between Fixed Ping and Flex Ping becomes more pronounced when the sample app is tested on a phone that has several apps running (such as an e-mail app, or a social networking app). Testing both of these pinging methods is a very simple example of how queuing/piggybacking data can save large amounts of radio connections, which saves a customer's battery life.

Caching On or Off
The Network Behavior Modification app downloads 8 images from Photobucket. If Caching is turned On, they will each be downloaded once. If Caching is turned Off, they could each be downloaded multiple times.

Close Connections Explicitly
Explicitly closing an HTTP connection can save significant energy resources. When a connection closing is delayed by being left to the operating system, the idle connection is actually restarted before it can close. This restarts the RRC timers and keeps the radio on for longer.

The following figure, taken from the Diagnostic Chart in the ARO Data Analyzer, shows an explicit and a delayed connection closing.

Figure 2: An explicit and delayed connection closing shown in the ARO Data Analyzer Diagnostic Chart.

Using the timeline at the bottom of figure 2 as a reference, the vertical lines at 440 seconds shows an image being downloaded and the connection being closed explicitly. The vertical lines at 462 seconds shows an image being downloaded, but the connection closing is delayed until approximately 471 seconds. This causes the RRC timer to reset (the upward sloping red triangle in the chart), and the radio stays on for a longer time (shown by the solid green bar).

The following code example, taken from the Network Behavior Modification app, shows how to close a connection explicitly.
          HttpURLConnection getimage = (HttpURLConnection) urln.openConnection(); 
if (closeconnection == "yes"){     getimage.setRequestProperty("connection","close"); } getimage.connect(); String cachecontrol = getimage.getHeaderField("Cache-Control"); InputStream is = getimage.getInputStream(); Bitmap bitmap = BitmapFactory.decodeStream(is); if (closeconnection == "yes"){     getimage.disconnect(); }
For more information on analyzing traces captured from apps like the Network Behavior Modification sample app, see Analyzing with ARO.

8. Help
Need Help with AT&T ARO?

Our Forum and Support Center can help you get answers to your questions quickly and easily.

For help with an issue that you would like to see resolved, submit a ticket directly to ARO Support.

AT&T ARO Documentation
The following documentation is provided to help you use AT&T ARO for testing, analyzing, and optimizing your application.
AT&T ARO Testing Guide
  • Helps you develop a testing strategy for your application that makes use of AT&T ARO.
  • Provides detailed instructions on how to collect data using the ARO Data Collector, how to analyze the data in the ARO Data Analyzer, and contains a complete reference of the tabs, menus, charts, graphs, statistical tables, and error messages in AT&T ARO.
  • Describes each of the suggested best practices tests that are used to evaluate an application, and provides examples to help you interpret the detailed results generated by AT&T ARO.

AT&T ARO Video Tutorials
The following videos demonstrate how to:
  • Use the test results, diagnostic information, analytical data, and statistics in the ARO Data Analyzer to get a full analysis of your app.
  • Test your app using the ARO Data Collector, and collect trace data on various test platforms.
  • Use the in-depth analysis and statistical information in AT&T ARO to optimize your app.
Introduction to ARO Provides an overview of how AT&T ARO works and describes the value of using AT&T ARO to improve the development process.
ARO Data Collector Describes the basics of how to use the ARO Data Collector.
ARO iOS Collector Shows you how to collect a network trace on an iOS device natively using the ARO iOS Collector introduced in AT&T ARO release 3.1.
ARO 2.2 Launch Demonstrates features that were introduced in the 2.2 release of AT&T ARO. In particular, collecting traces and trace video from an Android device directly through the ARO Analyzer, enhanced analysis and display of periodic bursts, and a test for text file compression.
Introduction to the ARO Diagnostic Tab Provides an introduction to the Diagnostic Tab in AT&T ARO, which displays analysis information in the form of an interactive chart that can be used to analyze throughput, uploaded packets, downloaded packets, bursts, user Inputs, Radio Resource Control (RRC) states, and other information.
ARO Diagnostic Tab Advanced Takes a deep dive into the analysis information displayed in the Diagnostic Tab of the AT&T ARO tool, and shows you how to access features that can help you discover exactly what is happening in your mobile app.
Turbocharge Your Mobile App Provides an in-depth look at why speed is extremely important to the success of mobile apps, describes how AT&T ARO determines your app speed, and gives you specific details of how to optimize your app by closing connections explicitly, caching data, and managing connections.
Application Startup Test Describes the importance of fast start-up times for mobile apps, and shows you how to use AT&T ARO to test, analyze, and optimize the start-up time of your app.
Radio Resource Control (RRC) State Machine Explains how the Radio Resource Control (RRC) State Machine affects mobile devices, and uses AT&T ARO to show you how knowledge of the way the RRC State Machine works can help you optimize your mobile app.

Other Resources
The following resources provide additional references and important background information for issues related to AT&T ARO.
AT&T ARO Testing Guide

The AT&T ARO Testing Guide helps you develop a testing strategy, shows you how ARO fits into that strategy, explains the test cases in ARO, and describes the best approach for using them to test your application.

For analysis, the ARO Testing Guide describes methods for collecting an application trace using the AT&T ARO Data Collector, how to install, launch, and open a trace in the AT&T ARO Data Analyzer, and contains a full reference of the tabs, menus, options, charts, graphs, and statistics in AT&T ARO.

For best practices, the ARO Testing Guide describes each of the tests that are used to evaluate an application, and provides examples to help you interpret the detailed results generated by AT&T ARO.

AT&T ARO Testing Guide
PDF 3.19 MB This document provides guidance on how to use AT&T ARO to test an application.

9. Release Notes
AT&T Application Resource Optimizer (ARO) Release 6.0 (01/31/17)

Application Resource Optimizer allows mobile application developers to test the network performance of video, images and other files for compression, speed, battery drain and other aspects of performance.

NOTE: We are rebranding ARO to Video Optimizer and the next software upgrade will reflect this by upgrading ARO 6.0 to Video Optimizer 1.1. Learn more.

Application Resource Optimizer 6.0 System Requirements

Before you download Application Resource Optimizer, make sure you meet the following system requirements for your operating system.

  • At least 2GB of RAM
  • Java 7 or above (should have the latest update of Java 1.7 or above)
  • For Android developers, Android SDK Level 19 or above
  • For iOS developers, use Xcode 8
  • WinPcap
  • FFMpeg
Application Resource Optimizer 6.0 Features

Release 6.0 is built for testing on iOS and Android devices, and extends the features released in the Application Resource Optimizer versions 1.0-5.1. Several features have further requirements, as listed here.

  • VPN Secured Collector (Supported on Android 4.2 to 4.4 (KitKat) only and Mac for collection)
    The secure collector feature in ARO can decrypt HTTPS traffic – providing you with a more thorough analysis of the traffic transmitted during your testing.

  • Network Attenuator (Supported on Android only)
    The Network Attenuator feature allows you to vary the attenuation of uplink and downlink network bandwidth, letting you test the impact of slower network speeds and different levels of network congestion on your app’s performance. The Network Attenuator feature can be used with Android devices and the Application Resource Optimizer’s VPN collector.

  • Video Best Practices
    A group of Best Practice tests that offer guidance on mobile development issues with video. These tests let you visualize and diagnose common streaming issues to optimally balance Deliver Quality (DQ) versus Video Quality (VQ). The DQ key performance indicators (KPI) are startup time, stalls, track switches, and latency.

  • Security Best Practices
    A section of Best Practice tests in the area of security help you check that your app is using HTTPS to better secure private data, and that you are using the latest HTTPS version to help you avoid unsecure SSL connections. Other security tests look for weak ciphers to protect the data you are transmitting with a stronger method of encryption and checks that the ciphers you are using support forward secrecy.

  • Image Best Practices
    New best practice tests to help you use images more efficiently. One new test looks at your image metadata to determine if unnecessary metadata is being included. Metadata can greatly increase file size, but has little benefit for the end user. Removing extra metadata makes the images smaller and lets them download faster.
    Another new test helps you find the best level of image compression so that the images in your app maintain quality at a smaller size. You can analyze all images (JPG, GIF, PNG, WebP) to ensure that the image was properly compressed.

  • Peripheral support using the VPN Collector
    The VPN collector in ARO 6.0 can collect data from peripherals.

  • Support for Android and Apple versions
    Android device (or emulator) running 4.4 or higher
    iOS device running iOS 6 or higher
What are the known issues in Release 6.0?
  • Android Emulator
    • Application Resource Optimizer works only with ARM emulators.

  • Security Best Practices
    • In our testing, only KitKat devices detected a week cipher.
    • Private data transmission: There is a false positive scenario that Analyzer reports a sixteen digit number as a credit card number.

  • Video Best Practices
    • Note: Traces that are collected from a paused video do not capture the manifest file, so the thumbnails are not displayed.
    • Some traces do not generate segments as the manifest file is not created.
    • Only stalls have the pass/fail criteria. All the other video best practices are currently informative only.
    • Although there are stalls in the trace, sometimes the buffer occupancy graph doesn't report them.
    • After setting the video start-up delay, you cannot set the recovery time that occurred in the trace.

  • HD/SD Video Options
    • HD option is disabled for windows.
    • HD/SD option is disabled for Linux.

  • Secured Collector
    • Selecting 'Secure' and not installing a certificate doesn't give an error when browsing occurs through secure websites like Yahoo, Google, Amazon, YouTube, etc.

  • Analyzer
    • HTTPS cache statistics tab displays all zeros.
    • When you click the zoom option on the Diagnostics Tab, you are not kept at the same point, for example, the page goes to the starting point.

  • Other Issues
    • When the Graph on the Diagnostics Tab is zoomed in, the video in the Image/Viewer may take longer to respond to commands such as Pause.
    • In the Diagnostic chart it shows a delay of the chunk arriving as a stall on the graph. However on the video viewer the spinning wheel is not displayed so it is not really a stall.
View past release notes

Need Help with AT&T ARO?

Our Forum and Support Center can help you get answers to your questions fast and easy.

            ARO Forum              Support Center