diff --git a/pom.xml b/pom.xml
index 61c17eca5..24b64fdc7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -20,7 +20,7 @@
com.simpligility.maven.plugins
android-maven-plugin
- 4.5.1-SNAPSHOT
+ 4.5.2-SNAPSHOT
maven-plugin
Android Maven Plugin - android-maven-plugin
diff --git a/src/main/java/com/simpligility/maven/plugins/android/AbstractEmulatorMojo.java b/src/main/java/com/simpligility/maven/plugins/android/AbstractEmulatorMojo.java
index 97980f96e..e307d6a14 100755
--- a/src/main/java/com/simpligility/maven/plugins/android/AbstractEmulatorMojo.java
+++ b/src/main/java/com/simpligility/maven/plugins/android/AbstractEmulatorMojo.java
@@ -102,6 +102,7 @@ public abstract class AbstractEmulatorMojo extends AbstractAndroidMojo
* <wait>20000</wait>
* <options>-no-skin</options>
* <executable>emulator-arm</executable>
+ * <location>C:/SDK/emulator</location>
* </emulator>
*
* or configure as properties on the command line as android.emulator.avd, android.emulator.wait,
@@ -143,7 +144,6 @@ public abstract class AbstractEmulatorMojo extends AbstractAndroidMojo
@Parameter( property = "android.emulator.options" )
private String emulatorOptions;
-
/**
* Override default emulator executable. Default uses just "emulator".
*
@@ -152,14 +152,22 @@ public abstract class AbstractEmulatorMojo extends AbstractAndroidMojo
@Parameter( property = "android.emulator.executable" )
private String emulatorExecutable;
+ /**
+ * Override default path to emulator folder.
+ */
+ @Parameter( property = "android.emulator.location" )
+ private String emulatorLocation;
+
/**
* parsed value for avd that will be used for the invocation.
*/
private String parsedAvd;
+
/**
* parsed value for options that will be used for the invocation.
*/
private String parsedOptions;
+
/**
* parsed value for wait that will be used for the invocation.
*/
@@ -167,6 +175,11 @@ public abstract class AbstractEmulatorMojo extends AbstractAndroidMojo
private String parsedExecutable;
+ /**
+ * parsed value for location that will be used for the invocation.
+ */
+ private String parsedEmulatorLocation;
+
private static final String START_EMULATOR_MSG = "Starting android emulator with script: ";
private static final String START_EMULATOR_WAIT_MSG = "Waiting for emulator start:";
@@ -264,7 +277,7 @@ protected void startAndroidEmulator() throws MojoExecutionException
throw new MojoExecutionException( "", e );
}
}
-
+
/**
* Unlocks the emulator.
* @param androidDebugBridge
@@ -767,7 +780,15 @@ public Boolean call() throws IOException
*/
private String assembleStartCommandLine() throws MojoExecutionException
{
- String emulatorPath = new File ( getAndroidSdk().getToolsPath(), parsedExecutable ).getAbsolutePath();
+ String emulatorPath;
+ if ( !"SdkTools".equals( parsedEmulatorLocation ) )
+ {
+ emulatorPath = new File( parsedEmulatorLocation, parsedExecutable ).getAbsolutePath();
+ }
+ else
+ {
+ emulatorPath = new File( getAndroidSdk().getToolsPath(), parsedExecutable ).getAbsolutePath();
+ }
StringBuilder startCommandline = new StringBuilder( "\"\"" ).append( emulatorPath ).append( "\"\"" )
.append( " -avd " ).append( parsedAvd ).append( " " );
if ( !StringUtils.isEmpty( parsedOptions ) )
@@ -789,7 +810,7 @@ private void parseParameters()
parsedAvd = emulator.getAvd();
}
else
- {
+ {
parsedAvd = determineAvd();
}
// exists in pom file
@@ -798,7 +819,7 @@ private void parseParameters()
parsedOptions = emulator.getOptions();
}
else
- {
+ {
parsedOptions = determineOptions();
}
// exists in pom file
@@ -807,7 +828,7 @@ private void parseParameters()
parsedWait = emulator.getWait();
}
else
- {
+ {
parsedWait = determineWait();
}
// exists in pom file
@@ -816,9 +837,18 @@ private void parseParameters()
parsedExecutable = emulator.getExecutable();
}
else
- {
+ {
parsedExecutable = determineExecutable();
}
+ // exists in pom file
+ if ( emulator.getLocation() != null )
+ {
+ parsedEmulatorLocation = emulator.getLocation();
+ }
+ else
+ {
+ parsedEmulatorLocation = determineEmulatorLocation();
+ }
}
// commandline options
else
@@ -827,6 +857,7 @@ private void parseParameters()
parsedOptions = determineOptions();
parsedWait = determineWait();
parsedExecutable = determineExecutable();
+ parsedEmulatorLocation = determineEmulatorLocation();
}
}
@@ -905,4 +936,24 @@ String determineAvd()
}
return avd;
}
+
+ /**
+ * Get location value for emulator from command line option.
+ *
+ * @return if available return command line value otherwise return default value ("SdkTools").
+ */
+ String determineEmulatorLocation()
+ {
+ String location;
+ if ( emulatorLocation != null )
+ {
+ location = emulatorLocation;
+ }
+ else
+ {
+ location = "SdkTools";
+ }
+ return location;
+ }
+
}
\ No newline at end of file
diff --git a/src/main/java/com/simpligility/maven/plugins/android/configuration/Emulator.java b/src/main/java/com/simpligility/maven/plugins/android/configuration/Emulator.java
index d36db838b..df9a42ce6 100644
--- a/src/main/java/com/simpligility/maven/plugins/android/configuration/Emulator.java
+++ b/src/main/java/com/simpligility/maven/plugins/android/configuration/Emulator.java
@@ -28,6 +28,13 @@ public class Emulator
*/
private String executable;
+ public String getLocation()
+ {
+ return location;
+ }
+
+ private String location;
+
public String getAvd()
{
return avd;