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;