Full name:
com.simpligility.maven.plugins:android-maven-plugin:4.6.0:uiautomator
Description:
Attributes:
Name | Type | Since | Description |
---|---|---|---|
aaptExtraArgs | String[] | - | A list of extra arguments that must be passed to aapt. User property is: android.aaptExtraArgs. |
aaptVerbose | boolean | - | Activate verbose output for the aapt execution in Maven debug mode.
Defaults to "false" User property is: android.aaptVerbose. |
adbConnectionTimeout | int | - | The timeout value for an adb connection in milliseconds. Default value is: 5000. User property is: android.adb.connectionTimeout. |
androidManifestFile | File | - | The AndroidManifest.xml file. Default value is: ${project.basedir}/src/main/AndroidManifest.xml. User property is: android.manifestFile. |
assetsDirectory | File | - | The android assets directory. Default value is: ${project.basedir}/src/main/assets. |
attachJar | boolean | - |
Whether to attach the normal .jar file to the build, so it can be depended on by for example integration-tests which may then access R.java from this project. Only disable it if you know you won't need it for any integration-tests. Otherwise, leave it enabled. Default value is: true. User property is: android.attachJar. |
attachSources | boolean | - |
Whether to attach sources to the build, which can be depended on by other apk projects, for including them in their builds. Enabling this setting is only required if this project's source code and/or res(ources) will be included in other projects, using the Maven <dependency> tag. Default value is: false. User property is: android.attachSources. |
configurations | String | - | A selection of configurations to be included in the APK as a comma
separated list. This will limit the configurations for a certain
type. For example, specifying hdpi will exclude all
resource folders with the mdpi or ldpi
modifiers, but won't affect language or orientation modifiers. For
more information about this option, look in the aapt command line
help. User property is: android.configurations. |
customPackage | String | - | Generates R.java into a different package. User property is: android.customPackage. |
destinationManifestFile | File | - | Path to which to save the result of updating/merging/processing the
source AndroidManifest.xml file
(androidManifestFile). Default value is: ${project.build.directory}/AndroidManifest.xml. User property is: destination.manifestFile. |
device | String | - | Specifies which the serial number of the device to connect to.
Using the special values "usb" or "emulator" is also valid. "usb"
will connect to all actual devices connected (via usb). "emulator"
will connect to all emulators connected. Multiple devices will be
iterated over in terms of goals to run. All device interaction
goals support this so you can e.. deploy the apk to all attached
emulators and devices. Goals supporting this are devices, deploy,
undeploy, redeploy, pull, push and instrument. User property is: android.device. |
deviceThreads | int | - |
Specifies the number of threads to use for deploying and testing on attached devices. This parameter can also be configured from command-line with parameter -Dandroid.deviceThreads=2. User property is: android.deviceThreads. |
devices | String[] | - |
Specifies a list of serial numbers of each device you want to connect to. Using the special values "usb" or "emulator" is also valid. "usb" will connect to all actual devices connected (via usb). "emulator" will connect to all emulators connected. Multiple devices will be iterated over in terms of goals to run. All device interaction goals support this so you can e.. deploy the apk to all attached emulators and devices. Goals supporting this are devices, deploy, undeploy, redeploy, pull, push and instrument. <devices> <device>usb</device> <device>emulator-5554</device> </devices> This parameter can also be configured from command-line with parameter -Dandroid.devices=usb,emulator. User property is: android.devices. |
disableConflictingDependenciesWarning | File | - | Whether the plugin should show a warning if conflicting
dependencies with the Android provided ones exist. Default value is: false. |
genDirectory | File | - | Override default generated folder containing R.java Default value is: ${project.build.directory}/generated-sources/r. User property is: android.genDirectory. |
generateApk | boolean | - | Decides whether the Apk should be generated or not. If set to
false, dx and apkBuilder will not run. This is probably most useful
for a project used to generate apk sources to be inherited into
another application project. Default value is: true. User property is: android.generateApk. |
includeLibsJarsFromAar | boolean | - |
Include jars stored in the libs folder of an aar as dependencies. Do not delete or change name as it is used in the LifeCycleParticipant. Default value is: true. |
includeLibsJarsFromApklib | boolean | - |
Include jars stored in the libs folder of an apklib as dependencies. Do not delete or change name as it is used in the LifeCycleParticipant. Default value is: false. |
ips | String[] | - |
External IP addresses. The connect goal of the android maven plugin will execute an adb connect on each IP address. If you have external dervice, you should call this connect goal before any other goal : mvn clean android:connect install. The Maven plugin will automatically add all these IP addresses into the the devices parameter. If you want to disconnect the IP addresses after the build, you can call the disconnect goal : mvn clean android:connect install android:disconnect <ips> <ip>127.0.0.1:5556</ip> </ips> User property is: android.ips. |
jack | Jack | - | configure the Jack compiler |
nativeLibrariesDirectory | File | - |
Root folder containing native libraries to include in the application package. Default value is: ${project.basedir}/src/main/libs. User property is: android.nativeLibrariesDirectory. |
ndk | Ndk | - |
The Android NDK to use. Looks like this: <ndk> <path>/opt/android-ndk-r4</path> </ndk> The <path> parameter is optional. The default is the setting of the ANDROID_NDK_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this: <ndk> <path>${env.ANDROID_NDK_HOME}</path> </ndk> or just with a hardcoded absolute path. The parameters can also be configured from command-line with parameter -Dandroid.ndk.path. |
proguardFile | File | - | Automatically create a ProGuard configuration file that will guard
Activity classes and the like that are defined in the
AndroidManifest.xml. This files is then automatically used in the
proguard mojo execution, if enabled. User property is: android.proguardFile. |
release | boolean | - | Whether to create a release build (default is false / debug build).
This affect BuildConfig generation and apk generation at this
stage, but should probably affect other aspects of the build. Default value is: false. User property is: android.release. |
renameManifestPackage | String | - |
A possibly new package name for the application. This value will be passed on to the aapt parameter --rename-manifest-package. Look to aapt for more help on this. User property is: android.renameManifestPackage. |
resourceDirectory | File | - | The Android resources (src/main/res) directory. Note that this is
different from the Maven/Java resources directory
(src/main/resources) and should not be set to be the same since
different processing is carried out on these folder by different
plugins and tools. Default value is: ${project.basedir}/src/main/res. |
resourceOverlayDirectories | File[] | - | The android resources overlay directories. If this is specified,
the resourceOverlayDirectory parameter will be
ignored. |
resourceOverlayDirectory | File | - | The android resources overlay directory. This will be overridden by
resourceOverlayDirectories if present. Default value is: ${project.basedir}/res-overlay. |
sdk | Sdk | - |
The Android SDK to use. Looks like this: <sdk> <path>/opt/android-sdk-linux</path> <platform>2.1</platform> </sdk> The <platform> parameter is optional, and corresponds to the platforms/android-* directories in the Android SDK directory. Default is the latest available version, so you only need to set it if you for example want to use platform 1.5 but also have e.g. 2.2 installed. Has no effect when used on an Android SDK 1.1. The parameter can also be coded as the API level. Therefore valid values are 1.1, 1.5, 1.6, 2.0, 2.01, 2.1, 2.2 and so as well as 3, 4, 5, 6, 7, 8... 19. If a platform/api level is not installed on the machine an error message will be produced. The <path> parameter is optional. The default is the setting of the ANDROID_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this: <sdk> <path>${env.ANDROID_SDK}</path> </sdk> or just with a hard-coded absolute path. The parameters can also be configured from command-line with parameters -Dandroid.sdk.path and -Dandroid.sdk.platform. |
uiautomator | UIAutomator | - | The configuration for the ui automator goal. As soon as a lint goal
is invoked the command will be executed unless the skip parameter
is set. A minimal configuration that will run lint and produce a
XML report in ${project.build.directory}/lint/lint-results.xml is
<uiautomator> <skip>false</skip> </uiautomator> <uiautomator> <skip>false</skip> <testClassOrMethods> <testClassOrMethod>com.foo.SampleTest</testClassOrMethod> <testClassOrMethod>com.bar.CalculatorTest#testCalculatorApp</testClassOrMethod> </testClassOrMethods> <createReport>true</createReport> <takeScreenshotOnFailure>true</takeScreenshotOnFailure> <screenshotsPathOnDevice>/sdcard/uiautomator-screenshots/</screenshotsPathOnDevice> <propertiesKeyPrefix>UIA</propertiesKeyPrefix> </uiautomator> |
uiautomatorCreateReport | Boolean | - | Create a junit xml format compatible output file containing the
test results for each device the instrumentation tests run on.
The files are stored in target/surefire-reports and named TEST-deviceid.xml. The deviceid for an emulator is deviceSerialNumber_avdName_manufacturer_model. The serial number is commonly emulator-5554 for the first emulator started with numbers increasing. avdName is as defined in the SDK tool. The manufacturer is typically "unknown" and the model is typically "sdk". The deviceid for an actual devices is deviceSerialNumber_manufacturer_model. The file contains system properties from the system running the Android Maven Plugin (JVM) and device properties from the device/emulator the tests are running on. The file contains a single TestSuite for all tests and a TestCase for each test method. Errors and failures are logged in the file and the system log with full stack traces and other details available. User property is: android.uiautomator.createReport. |
uiautomatorDebug | Boolean | - | Decides whether to wait for debugger to connect before starting. User property is: android.uiautomator.debug. |
uiautomatorDumpFilePath | String | - | Generate an XML file with a dump of the current UI hierarchy. If a
filepath is not specified, by default, the generated dump file is
stored on the device in this location
/storage/sdcard0/window_dump.xml. User property is: android.uiautomator.dumpFilePath. |
uiautomatorJarFile | String | - | Jar file that will be run during ui uiautomator tests. User property is: android.uiautomator.jarFile. |
uiautomatorNoHup | Boolean | - | Decides whether to run the test to completion on the device even if
its parent process is terminated (for example, if the device is
disconnected). User property is: android.uiautomator.noHup. |
uiautomatorPropertiesKeyPrefix | String | - |
Specifies a prefix for custom user properties that will be sent through to UIAutomator with the "-e key value" parameter. If any user property is needed in a test case, this is the way to send it through. User credentials for example. If no prefix value is specified no user property will be sent. Usage example: <propertiesKeyPrefix>UIA</propertiesKeyPrefix> And run it with: > mvn <goal> "-DUIAkey=value" would become "-e key value" as it would be runned from adb User property is: android.uiautomator.propertiesKeyPrefix. |
uiautomatorReportSuffix | String | - | Adds a suffix to the report name. For example if parameter
reportSuffix is "-mySpecialReport", the name of the report will be
TEST-deviceid-mySpecialReport.xml Defaults to null. Hence, in the
default case, the name of the report will be TEST-deviceid.xml. User property is: android.uiautomator.reportSuffix. |
uiautomatorScreenshotsPathOnDevice | String | - | Location of the screenshots on device. This value is only taken
into account if takeScreenshotOnFailure = true. If a filepath is
not specified, by default, the screenshots will be located at
/sdcard/uiautomator-screenshots/. User property is: android.uiautomator.screenshotsPathOnDevice. |
uiautomatorSkip | Boolean | - | Enables or disables uiautomator test goal. If true it
will be skipped; if false, it will be run. User property is: android.uiautomator.skip. |
uiautomatorTakeScreenshotOnFailure | Boolean | - | Decides whether or not to take screenshots when tests execution
results in failure or error. Screenshots use the utiliy screencap
that is usually available within emulator/devices with SDK >=
16. User property is: android.uiautomator.takeScreenshotOnFailure. |
uiautomatorTestClassOrMethods | String[] | - | Test class or methods to execute during uiautomator tests. Each
class or method must be fully qualified with the package name, in
one of these formats:
User property is: android.uiautomator.testClassOrMethod. |
uiautomatorUseDump | Boolean | - | Decides whether to use a dump file or not. User property is: android.uiautomator.useDump. |
undeployBeforeDeploy | boolean | - |
Whether to undeploy an apk from the device before deploying it. Only has effect when running mvn android:deploy in an Android application project manually, or when running mvn integration-test (or mvn install) in a project with instrumentation tests. It is useful to keep this set to true at all times, because if an apk with the same package was previously signed with a different keystore, and deployed to the device, deployment will fail because your keystore is different. Default value is: false. User property is: android.undeployBeforeDeploy. |
unpackedLibsFolder | File | - | Folder in which AAR library dependencies will be unpacked. Default value is: ${project.build.directory}/unpacked-libs. User property is: unpackedLibsFolder. |
Whether to attach the normal .jar file to the build, so it can be depended on by for example integration-tests which may then access R.java from this project.
Only disable it if you know you won't need it for any integration-tests. Otherwise, leave it enabled.
Whether to attach sources to the build, which can be depended on by other apk projects, for including them in their builds.
Enabling this setting is only required if this project's source code and/or res(ources) will be included in other projects, using the Maven <dependency> tag.
Specifies the number of threads to use for deploying and testing on attached devices.
This parameter can also be configured from command-line with parameter -Dandroid.deviceThreads=2.
Specifies a list of serial numbers of each device you want to connect to. Using the special values "usb" or "emulator" is also valid. "usb" will connect to all actual devices connected (via usb). "emulator" will connect to all emulators connected. Multiple devices will be iterated over in terms of goals to run. All device interaction goals support this so you can e.. deploy the apk to all attached emulators and devices. Goals supporting this are devices, deploy, undeploy, redeploy, pull, push and instrument.
<devices> <device>usb</device> <device>emulator-5554</device> </devices>
This parameter can also be configured from command-line with parameter -Dandroid.devices=usb,emulator.
disableConflictingDependenciesWarning:
Include jars stored in the libs folder of an aar as dependencies. Do not delete or change name as it is used in the LifeCycleParticipant.
Include jars stored in the libs folder of an apklib as dependencies. Do not delete or change name as it is used in the LifeCycleParticipant.
ips:
External IP addresses. The connect goal of the android maven plugin will execute an adb connect on each IP address. If you have external dervice, you should call this connect goal before any other goal : mvn clean android:connect install.
The Maven plugin will automatically add all these IP addresses into the the devices parameter. If you want to disconnect the IP addresses after the build, you can call the disconnect goal : mvn clean android:connect install android:disconnect
<ips> <ip>127.0.0.1:5556</ip> </ips>
jack:
Root folder containing native libraries to include in the application package.
ndk:
The Android NDK to use.
Looks like this:
<ndk> <path>/opt/android-ndk-r4</path> </ndk>
The <path> parameter is optional. The default is the setting of the ANDROID_NDK_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:
<ndk> <path>${env.ANDROID_NDK_HOME}</path> </ndk>
or just with a hardcoded absolute path. The parameters can also be configured from command-line with parameter -Dandroid.ndk.path.
A possibly new package name for the application. This value will be passed on to the aapt parameter --rename-manifest-package. Look to aapt for more help on this.
sdk:
The Android SDK to use.
Looks like this:
<sdk> <path>/opt/android-sdk-linux</path> <platform>2.1</platform> </sdk>
The <platform> parameter is optional, and corresponds to the platforms/android-* directories in the Android SDK directory. Default is the latest available version, so you only need to set it if you for example want to use platform 1.5 but also have e.g. 2.2 installed. Has no effect when used on an Android SDK 1.1. The parameter can also be coded as the API level. Therefore valid values are 1.1, 1.5, 1.6, 2.0, 2.01, 2.1, 2.2 and so as well as 3, 4, 5, 6, 7, 8... 19. If a platform/api level is not installed on the machine an error message will be produced.
The <path> parameter is optional. The default is the setting of the ANDROID_HOME environment variable. The parameter can be used to override this setting with a different environment variable like this:
<sdk> <path>${env.ANDROID_SDK}</path> </sdk>
or just with a hard-coded absolute path. The parameters can also be configured from command-line with parameters -Dandroid.sdk.path and -Dandroid.sdk.platform.
<uiautomator> <skip>false</skip> </uiautomator>
<uiautomator> <skip>false</skip> <testClassOrMethods> <testClassOrMethod>com.foo.SampleTest</testClassOrMethod> <testClassOrMethod>com.bar.CalculatorTest#testCalculatorApp</testClassOrMethod> </testClassOrMethods> <createReport>true</createReport> <takeScreenshotOnFailure>true</takeScreenshotOnFailure> <screenshotsPathOnDevice>/sdcard/uiautomator-screenshots/</screenshotsPathOnDevice> <propertiesKeyPrefix>UIA</propertiesKeyPrefix> </uiautomator>
uiautomatorPropertiesKeyPrefix:
Specifies a prefix for custom user properties that will be sent through to UIAutomator with the "-e key value" parameter.
If any user property is needed in a test case, this is the way to send it through. User credentials for example.
If no prefix value is specified no user property will be sent.
Usage example:
<propertiesKeyPrefix>UIA</propertiesKeyPrefix>
And run it with:
> mvn <goal> "-DUIAkey=value"
would become "-e key value" as it would be runned from adb
uiautomatorScreenshotsPathOnDevice:
uiautomatorTakeScreenshotOnFailure:
uiautomatorTestClassOrMethods:
Whether to undeploy an apk from the device before deploying it.
Only has effect when running mvn android:deploy in an Android application project manually, or when running mvn integration-test (or mvn install) in a project with instrumentation tests.
It is useful to keep this set to true at all times, because if an apk with the same package was previously signed with a different keystore, and deployed to the device, deployment will fail because your keystore is different.