Instrumenting Android Applications in Android Studio (Legacy)

Applies to TestComplete 15.45, last modified on December 01, 2022
The information below concerns legacy mobile tests that work with mobile devices connected to the local computer. For new mobile tests, we recommend using the newer cloud-compatible approach.

To create object-based Android tests, your tested application must be instrumented. TestComplete does it automatically when running Android applications from the Tested Applications collection.

This topic explains an alternative approach – how to instrument Android applications with Android Studio.

Do not submit instrumented applications to the Google Play. Instrumented applications use private APIs and will be rejected. Create a separate build configuration for test builds.

Requirements

The instructions below assume that Android Studio is installed on your computer. It is part of the Android Developer Tools package that can be downloaded from this web site:

http://developer.android.com/sdk

Preparation Steps

1. Include the PatchServices.jar Library in Your Project

  1. Open your Android project in Android Studio.

  2. Expand the app\libs folder.

  3. Copy the PatchServices.jar library to the libs project folder and click OK in the Copy dialog. The library file is located in the <TestComplete>\Bin\Extensions\Android folder on your computer.

  4. Add PatchServices.jar to the dependencies list in the app\build.gradle file of your project:

    Java

    dependencies {
      compile files ('libs/PatchServices.jar')
    }
    Note: You need to add a library reference to an individual module's build.gradle file, not to the top-level build file.

2. Initialize the PatchServices Library When Application Starts

The main goal of this step is to initialize TestComplete tools when the application starts. There are two ways to do that. If your application has more than one activity, you need to place the initializing line in the constructor of your application.

Java

public class MyApplication extends Application
{
    public MyApplication()
    {
        // The method that initializes TestComplete tools
        com.smartbear.uibinder.Binder.Initialize(this);
 
        …
    }
}

If there is only one activity in the tested application, you can add the initializing line to the onCreate method of the activity.

Java

public class MainActivity extends Activity
{
    protected void onCreate(Bundle savedInstanceState)
    {
        // The method that initializes TestComplete tools
        com.smartbear.uibinder.Binder.Initialize(getApplication());
 
        …
    }
}

3. (For Android 11) Configure the application manifest

If the application is built with Android SDK 30 for Android version 11, configure the application’s manifest to allow the TestComplete Test Agent to access the application. For this, add one of the following to the manifest file:

AndroidManifest.xml

<queries>
  <package android:name="com.smartbear.androidagent"/>
</queries>

– or –

AndroidManifest.xml

<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />

See Also

Testing Android Applications (Legacy)
About Testing Android Applications (Legacy)

Highlight search results