Fork me on GitHub

android:proguard

Full name:

com.simpligility.maven.plugins:android-maven-plugin:4.5.0:proguard

Description:

Processes both application and dependency classes using the ProGuard byte code obfuscator, minimzer, and optimizer. For more information, see https://proguard.sourceforge.net.

Attributes:

  • Requires a Maven project to be executed.
  • Requires dependency resolution of artifacts in scope: compile.
  • Binds by default to the lifecycle phase: process-classes.

Optional Parameters

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.
artifactSet IncludeExcludeSet - Allows to include or exclude artifacts by groupId, artifactId, and versionId. The include parameter has higher priority than the exclude parameter. These two parameters can override the artifactTypeSet and skipDependencies parameters. Artifact groupId, artifactId, and versionId are specified by a string with the respective values separated using a colon character :. artifactId and versionId can be optional covering an artifact range. Empty strings are ignored. Example:
    <artifactTypeSet>
        <includes>
            <include>foo-group:foo-artifact:1.0-SNAPSHOT</include>
            <include>bar-group:bar-artifact:1.0-SNAPSHOT</include>
            <include>baz-group:*</include>
        <includes>
        <excludes>
            <exclude>qux-group:qux-artifact:*</exclude>
        <excludes>
    </artifactTypeSet>

User property is: artifactSet.
artifactTypeSet IncludeExcludeSet - Allows to include or exclude artifacts by type. The include parameter has higher priority than the exclude parameter. These two parameters can be overridden by the artifactSet parameter. Empty strings are ignored. Example:
    <artifactTypeSet>
        <includes>
            <include>aar</include>
        <includes>
        <excludes>
            <exclude>jar</exclude>
        <excludes>
    </artifactTypeSet>

User property is: artifactTypeSet.
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.
attachMap Boolean - If set to true the mapping.txt file will be attached as artifact of type map
User property is: android.proguard.attachMap.
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.
includeJdkLibs Boolean - If set to true JDK jars will be included as library jars and corresponding filters will be applied to android.jar.
User property is: android.proguard.includeJdkLibs.
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.


obfuscatedJar String - (no description)
Default value is: ${project.build.directory}/${project.build.finalName}_obfuscated.jar.
User property is: android.proguard.obfuscatedJar.
outputDirectory File - Path relative to the project's build directory (target) where proguard puts folowing files:
  • dump.txt
  • seeds.txt
  • usage.txt
  • mapping.txt
You can define the directory like this:
<proguard>
  <skip>false</skip>
  <config>proguard.cfg</config>
  <outputDirectory>my_proguard</outputDirectory>
</proguard>
Output directory is defined relatively so it could be also outside of the target directory.
User property is: android.proguard.outputDirectory.
proguard Proguard -

ProGuard configuration. ProGuard is disabled by default. Set the skip parameter to false to activate proguard. A complete configuration can include any of the following:

<proguard>
   <skip>true|false</skip>
   <config>proguard.cfg</config>
   <configs>
     <config>${env.ANDROID_HOME}/tools/proguard/proguard-android.txt</config>
   </configs>
   <proguardJarPath>someAbsolutePathToProguardJar</proguardJarPath>
   <filterMavenDescriptor>true|false</filterMavenDescriptor>
   <filterManifest>true|false</filterManifest>
   <customFilter>filter1,filter2</customFilter>
   <jvmArguments>
    <jvmArgument>-Xms256m</jvmArgument>
    <jvmArgument>-Xmx512m</jvmArgument>
  </jvmArguments>
</proguard>

A good practice is to create a release profile in your POM, in which you enable ProGuard. ProGuard should be disabled for development builds, since it obfuscates class and field names, and it may interfere with test projects that rely on your application classes. All parameters can be overridden in profiles or the the proguard* properties. Default values apply and are documented with these properties.


proguardCustomFilter String - You can specify a custom filter which will be used to filter out unnecessary files from ProGuard input.
User property is: android.proguard.customfilter.
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.
proguardFilterManifest Boolean - If set to true will add a filter to remove META-INF/MANIFEST.MF files. Defaults to false.
User property is: android.proguard.filterManifest.
proguardFilterMavenDescriptor Boolean - If set to true will add a filter to remove META-INF/maven/* files. Defaults to false.
User property is: android.proguard.filterMavenDescriptor.
proguardJvmArguments String[] - Extra JVM Arguments. Using these you can e.g. increase memory for the jvm running the build. Defaults to "-Xmx512M".
User property is: android.proguard.jvmArguments.
proguardOptions String[] - Additional ProGuard options
User property is: android.proguard.options.
proguardProguardJarPath String - Path to the proguard jar and therefore version of proguard to be used. By default this will use Proguard from the Central Repository. Overriding it with an absolute path allows you to use a newer or custom proguard version.. You can also reference an external Proguard version as a plugin dependency like this:
<plugin>
  <groupId>com.jayway.maven.plugins.android.generation2</groupId>
  <artifactId>android-maven-plugin</artifactId>
    <dependencies>
      <dependency>
        <groupId>net.sf.proguard</groupId>
        <artifactId>proguard-base</artifactId>
        <version>4.7</version>
      </dependency>
    </dependencies>
which will download and use Proguard 4.7 as deployed to the Central Repository.
User property is: android.proguard.proguardJarPath.
proguardSkip Boolean - Whether ProGuard is enabled or not. Defaults to true.
User property is: android.proguard.skip.
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.


skipDependencies boolean - Skips transitive dependencies. May be useful if the target classes directory is populated with the maven-dependency-plugin and already contains all dependency classes.
Default value is: false.
User property is: skipDependencies.
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.

Parameter Details

aaptExtraArgs:

A list of extra arguments that must be passed to aapt.
  • Type: java.lang.String[]
  • Required: No
  • User Property: android.aaptExtraArgs

aaptVerbose:

Activate verbose output for the aapt execution in Maven debug mode. Defaults to "false"
  • Type: boolean
  • Required: No
  • User Property: android.aaptVerbose

adbConnectionTimeout:

The timeout value for an adb connection in milliseconds.
  • Type: int
  • Required: No
  • User Property: android.adb.connectionTimeout
  • Default: 5000

androidManifestFile:

The AndroidManifest.xml file.
  • Type: java.io.File
  • Required: No
  • User Property: android.manifestFile
  • Default: ${project.basedir}/src/main/AndroidManifest.xml

artifactSet:

Allows to include or exclude artifacts by groupId, artifactId, and versionId. The include parameter has higher priority than the exclude parameter. These two parameters can override the artifactTypeSet and skipDependencies parameters. Artifact groupId, artifactId, and versionId are specified by a string with the respective values separated using a colon character :. artifactId and versionId can be optional covering an artifact range. Empty strings are ignored. Example:
    <artifactTypeSet>
        <includes>
            <include>foo-group:foo-artifact:1.0-SNAPSHOT</include>
            <include>bar-group:bar-artifact:1.0-SNAPSHOT</include>
            <include>baz-group:*</include>
        <includes>
        <excludes>
            <exclude>qux-group:qux-artifact:*</exclude>
        <excludes>
    </artifactTypeSet>
  • Type: com.simpligility.maven.plugins.android.IncludeExcludeSet
  • Required: No
  • User Property: artifactSet

artifactTypeSet:

Allows to include or exclude artifacts by type. The include parameter has higher priority than the exclude parameter. These two parameters can be overridden by the artifactSet parameter. Empty strings are ignored. Example:
    <artifactTypeSet>
        <includes>
            <include>aar</include>
        <includes>
        <excludes>
            <exclude>jar</exclude>
        <excludes>
    </artifactTypeSet>
  • Type: com.simpligility.maven.plugins.android.IncludeExcludeSet
  • Required: No
  • User Property: artifactTypeSet

assetsDirectory:

The android assets directory.
  • Type: java.io.File
  • Required: No
  • Default: ${project.basedir}/src/main/assets

attachJar:

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.

  • Type: boolean
  • Required: No
  • User Property: android.attachJar
  • Default: true

attachMap:

If set to true the mapping.txt file will be attached as artifact of type map
  • Type: java.lang.Boolean
  • Required: No
  • User Property: android.proguard.attachMap

attachSources:

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.

  • Type: boolean
  • Required: No
  • User Property: android.attachSources
  • Default: false

configurations:

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.
  • Type: java.lang.String
  • Required: No
  • User Property: android.configurations

customPackage:

Generates R.java into a different package.
  • Type: java.lang.String
  • Required: No
  • User Property: android.customPackage

destinationManifestFile:

Path to which to save the result of updating/merging/processing the source AndroidManifest.xml file (androidManifestFile).
  • Type: java.io.File
  • Required: No
  • User Property: destination.manifestFile
  • Default: ${project.build.directory}/AndroidManifest.xml

device:

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.
  • Type: java.lang.String
  • Required: No
  • User Property: android.device

deviceThreads:

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.

  • Type: int
  • Required: No
  • User Property: android.deviceThreads

devices:

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.

  • Type: java.lang.String[]
  • Required: No
  • User Property: android.devices

disableConflictingDependenciesWarning:

Whether the plugin should show a warning if conflicting dependencies with the Android provided ones exist.
  • Type: java.io.File
  • Required: No
  • Default: false

genDirectory:

Override default generated folder containing R.java
  • Type: java.io.File
  • Required: No
  • User Property: android.genDirectory
  • Default: ${project.build.directory}/generated-sources/r

generateApk:

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.
  • Type: boolean
  • Required: No
  • User Property: android.generateApk
  • Default: true

includeJdkLibs:

If set to true JDK jars will be included as library jars and corresponding filters will be applied to android.jar.
  • Type: java.lang.Boolean
  • Required: No
  • User Property: android.proguard.includeJdkLibs

includeLibsJarsFromAar:

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.

  • Type: boolean
  • Required: No
  • Default: true

includeLibsJarsFromApklib:

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.

  • Type: boolean
  • Required: No
  • Default: false

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>
  • Type: java.lang.String[]
  • Required: No
  • User Property: android.ips

jack:

configure the Jack compiler
  • Type: com.simpligility.maven.plugins.android.configuration.Jack
  • Required: No

nativeLibrariesDirectory:

Root folder containing native libraries to include in the application package.

  • Type: java.io.File
  • Required: No
  • User Property: android.nativeLibrariesDirectory
  • Default: ${project.basedir}/src/main/libs

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.

  • Type: com.simpligility.maven.plugins.android.configuration.Ndk
  • Required: No

obfuscatedJar:

(no description)
  • Type: java.lang.String
  • Required: No
  • User Property: android.proguard.obfuscatedJar
  • Default: ${project.build.directory}/${project.build.finalName}_obfuscated.jar

outputDirectory:

Path relative to the project's build directory (target) where proguard puts folowing files:
  • dump.txt
  • seeds.txt
  • usage.txt
  • mapping.txt
You can define the directory like this:
<proguard>
  <skip>false</skip>
  <config>proguard.cfg</config>
  <outputDirectory>my_proguard</outputDirectory>
</proguard>
Output directory is defined relatively so it could be also outside of the target directory.
  • Type: java.io.File
  • Required: No
  • User Property: android.proguard.outputDirectory

proguard:

ProGuard configuration. ProGuard is disabled by default. Set the skip parameter to false to activate proguard. A complete configuration can include any of the following:

<proguard>
   <skip>true|false</skip>
   <config>proguard.cfg</config>
   <configs>
     <config>${env.ANDROID_HOME}/tools/proguard/proguard-android.txt</config>
   </configs>
   <proguardJarPath>someAbsolutePathToProguardJar</proguardJarPath>
   <filterMavenDescriptor>true|false</filterMavenDescriptor>
   <filterManifest>true|false</filterManifest>
   <customFilter>filter1,filter2</customFilter>
   <jvmArguments>
    <jvmArgument>-Xms256m</jvmArgument>
    <jvmArgument>-Xmx512m</jvmArgument>
  </jvmArguments>
</proguard>

A good practice is to create a release profile in your POM, in which you enable ProGuard. ProGuard should be disabled for development builds, since it obfuscates class and field names, and it may interfere with test projects that rely on your application classes. All parameters can be overridden in profiles or the the proguard* properties. Default values apply and are documented with these properties.

  • Type: com.simpligility.maven.plugins.android.configuration.Proguard
  • Required: No

proguardCustomFilter:

You can specify a custom filter which will be used to filter out unnecessary files from ProGuard input.
  • Type: java.lang.String
  • Required: No
  • User Property: android.proguard.customfilter

proguardFile:

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.
  • Type: java.io.File
  • Required: No
  • User Property: android.proguardFile

proguardFilterManifest:

If set to true will add a filter to remove META-INF/MANIFEST.MF files. Defaults to false.
  • Type: java.lang.Boolean
  • Required: No
  • User Property: android.proguard.filterManifest

proguardFilterMavenDescriptor:

If set to true will add a filter to remove META-INF/maven/* files. Defaults to false.
  • Type: java.lang.Boolean
  • Required: No
  • User Property: android.proguard.filterMavenDescriptor

proguardJvmArguments:

Extra JVM Arguments. Using these you can e.g. increase memory for the jvm running the build. Defaults to "-Xmx512M".
  • Type: java.lang.String[]
  • Required: No
  • User Property: android.proguard.jvmArguments

proguardOptions:

Additional ProGuard options
  • Type: java.lang.String[]
  • Required: No
  • User Property: android.proguard.options

proguardProguardJarPath:

Path to the proguard jar and therefore version of proguard to be used. By default this will use Proguard from the Central Repository. Overriding it with an absolute path allows you to use a newer or custom proguard version.. You can also reference an external Proguard version as a plugin dependency like this:
<plugin>
  <groupId>com.jayway.maven.plugins.android.generation2</groupId>
  <artifactId>android-maven-plugin</artifactId>
    <dependencies>
      <dependency>
        <groupId>net.sf.proguard</groupId>
        <artifactId>proguard-base</artifactId>
        <version>4.7</version>
      </dependency>
    </dependencies>
which will download and use Proguard 4.7 as deployed to the Central Repository.
  • Type: java.lang.String
  • Required: No
  • User Property: android.proguard.proguardJarPath

proguardSkip:

Whether ProGuard is enabled or not. Defaults to true.
  • Type: java.lang.Boolean
  • Required: No
  • User Property: android.proguard.skip

release:

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.
  • Type: boolean
  • Required: No
  • User Property: android.release
  • Default: false

renameManifestPackage:

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.

  • Type: java.lang.String
  • Required: No
  • User Property: android.renameManifestPackage

resourceDirectory:

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.
  • Type: java.io.File
  • Required: No
  • Default: ${project.basedir}/src/main/res

resourceOverlayDirectories:

The android resources overlay directories. If this is specified, the resourceOverlayDirectory parameter will be ignored.
  • Type: java.io.File[]
  • Required: No

resourceOverlayDirectory:

The android resources overlay directory. This will be overridden by resourceOverlayDirectories if present.
  • Type: java.io.File
  • Required: No
  • Default: ${project.basedir}/res-overlay

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.

  • Type: com.simpligility.maven.plugins.android.configuration.Sdk
  • Required: No

skipDependencies:

Skips transitive dependencies. May be useful if the target classes directory is populated with the maven-dependency-plugin and already contains all dependency classes.
  • Type: boolean
  • Required: No
  • User Property: skipDependencies
  • Default: false

undeployBeforeDeploy:

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.

  • Type: boolean
  • Required: No
  • User Property: android.undeployBeforeDeploy
  • Default: false

unpackedLibsFolder:

Folder in which AAR library dependencies will be unpacked.
  • Type: java.io.File
  • Required: No
  • User Property: unpackedLibsFolder
  • Default: ${project.build.directory}/unpacked-libs