Arm Mobile Studio FAQs

Here are answers to common questions about Arm Mobile Studio.

Please ensure you are using the latest version of Arm Mobile Studio, which you can download here.

What is the difference between Graphics Analyzer and Mali Graphics Debugger?

Graphics Analyzer is a rebranded version of Mali Graphics Debugger, and will replace Mali Graphics Debugger for future tool releases. The name was changed to highlight that the tool is no longer restricted to supporting platforms only running on a Mali GPU, and will now enable debug of graphical applications irrespective of the GPU in the target device.

Arm Mobile Studio tools are failing with a license error, what can I do?

Arm Mobile Studio ships with an integrated Starter Edition license that is automatically detected. An alternative license, such as a commercial license, can be specified using environment variables.

Environment variables take precedence over the integrated license configuration, so any misconfiguration can result in a license error. Issues can include:

  • The ARMLMD_LICENSE_FILE environment variable specifies a license file or license server that cannot be found.
  • The ARMLMD_LICENSE_FILE environment variable specifies a license file that is not a valid Mobile Studio license.
  • The ARM_MS_TOOL_VARIANT environment variable specifies a tool variant that does not match a Mobile Studio edition that is available in the license file.
  • The optional ARM_MS_PRODUCT_DEF environment variable specifies a license map that does not match a Mobile Studio edition that is available in the license file.

For Mobile Studio licensing, unset all of the licensing environment variables:

  • ARMLMD_LICENSE_FILE
  • ARM_MS_TOOL_VARIANT
  • ARM_MS_PRODUCT_DEF

Unsetting these environment variables configures Mobile Studio to use the integrated Starter Edition license.

If you need to specify an upgraded Mobile Studio license:

  1. Set ARMLMD_LICENSE_FILE to point to your license file (node locked licenses) or license server (floating licenses).
  2. Set ARM_MS_TOOL_VARIANT to hv_ev.

Note: Streamline and Graphics Analyzer ship in both Mobile Studio and Development Studio, but the builds of the tool for the two studios are different. You cannot use a Mobile Studio or Development Studio build of a tool with a license for the other build. For more information about Development Studio license configuration, see Licensing Arm Development Studio.

The Graphics Analyzer interceptor fails with a socket permissions error, what can I do?

Impacted releases: Mobile Studio 2019.0, Mobile Studio 2019.1.

The Graphics Analyzer interceptor uses a local domain socket to connect the application being instrumented to the on-target daemon, which is used to package the data for the host machine. In recent versions of the Android SDK, applications are placed inside a more restrictive security sandbox which blocks access to the method we use to create the local domain socket.

To avoid this issue, build the application being tested using a manifest, setting the targetSdkVersion to 25 or lower.

The Graphics Analyzer host Device Manager cannot find the daemon APK, what can I do?

Impacted releases: Mobile Studio 2019.0. Fixed: Mobile Studio 2019.1.

The Graphics Analyzer host GUI can be used to install the Graphics Analyzer daemon software on a connected Android device. The current release uses a signed macOS binary for the application but does not use a signed disk image for the data files the application uses, which means that the application cannot  access the APK to install it.

To avoid this issue, manually install the APK using adb install from the command line. The file is located in the installation directory:

adb install <install_location>/graphics_analyzer/target/android/arm/AGA.apk

The Graphics Analyzer interceptor fails when tracing applications running on Android 10, what can I do?

Graphics Analyzer fails when intercepting API calls from applications that contain native C++ code, on devices running Android 10(Q). The interceptor starts normally, but shuts down after the application starts, capturing only one API call. There are no error messages.

This problem occurs because there are changes to the bionic libraries and dynamic linker paths in Android 10.

To resolve this issue, you must move the System.loadLibrary() call from the start of the main activity to inside the Native C++ activity constructor. Call the load method after the super.onCreate() call in the onCreate method:

public class YourNativeActivity extends NativeActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
// Call super-class onCreate first super.onCreate(savedInstanceState); // Load interceptor second try { System.loadLibrary("AGA"); } catch (UnsatisfiedLinkError e) { e.printStackTrace(); } ... } }