diff --git a/compiler/android-tests/src/org/jetbrains/kotlin/android/tests/CodegenTestsOnAndroidRunner.java b/compiler/android-tests/src/org/jetbrains/kotlin/android/tests/CodegenTestsOnAndroidRunner.java index 9ba686c31eb..c29a441c0b3 100644 --- a/compiler/android-tests/src/org/jetbrains/kotlin/android/tests/CodegenTestsOnAndroidRunner.java +++ b/compiler/android-tests/src/org/jetbrains/kotlin/android/tests/CodegenTestsOnAndroidRunner.java @@ -175,7 +175,7 @@ public class CodegenTestsOnAndroidRunner { } SDKDownloader downloader = new SDKDownloader(pathManager); - Emulator emulator = new Emulator(pathManager); + Emulator emulator = new Emulator(pathManager, Emulator.X86); AntRunner antRunner = new AntRunner(pathManager); downloader.downloadAll(); downloader.unzipAll(); diff --git a/compiler/android-tests/src/org/jetbrains/kotlin/android/tests/download/SDKDownloader.java b/compiler/android-tests/src/org/jetbrains/kotlin/android/tests/download/SDKDownloader.java index 2b1f37b332b..5d6572c4b82 100644 --- a/compiler/android-tests/src/org/jetbrains/kotlin/android/tests/download/SDKDownloader.java +++ b/compiler/android-tests/src/org/jetbrains/kotlin/android/tests/download/SDKDownloader.java @@ -29,7 +29,8 @@ import java.util.zip.ZipInputStream; public class SDKDownloader { private final String platformZipPath; - private final String systemImages; + private final String armImage; + private final String x86Image; private final String platformToolsZipPath; private final String skdToolsZipPath; private final String buildToolsZipPath; @@ -45,7 +46,8 @@ public class SDKDownloader { public SDKDownloader(PathManager pathManager) { this.pathManager = pathManager; platformZipPath = pathManager.getRootForDownload() + "/platforms.zip"; - systemImages = pathManager.getRootForDownload() + "/system-images.zip"; + armImage = pathManager.getRootForDownload() + "/arm-image.zip"; + x86Image = pathManager.getRootForDownload() + "/x86-image.zip"; platformToolsZipPath = pathManager.getRootForDownload() + "/platform-tools.zip"; skdToolsZipPath = pathManager.getRootForDownload() + "/tools.zip"; buildToolsZipPath = pathManager.getRootForDownload() + "/build-tools.zip"; @@ -56,7 +58,8 @@ public class SDKDownloader { } private void downloadAbi() { - download("http://dl.google.com/android/repository/sys-img/android/sysimg_armv7a-" + ANDROID_VERSION + "_r04.zip", systemImages); //Same for all platforms + download("http://dl.google.com/android/repository/sys-img/android/sysimg_armv7a-" + ANDROID_VERSION + "_r04.zip", armImage); //Same for all platforms + download("https://dl.google.com/android/repository/sys-img/android/sysimg_x86-" + ANDROID_VERSION + "_r02.zip", x86Image); //Same for all platforms } public void downloadPlatformTools() { @@ -100,9 +103,12 @@ public class SDKDownloader { public void unzipAll() { String androidSdkRoot = pathManager.getAndroidSdkRoot(); unzip(platformZipPath, pathManager.getPlatformFolderInAndroidSdk()); - unzip(systemImages, androidSdkRoot + "/system-images/android-" + ANDROID_VERSION + "/"); + unzip(armImage, androidSdkRoot + "/system-images/android-" + ANDROID_VERSION + "/"); + unzip(x86Image, androidSdkRoot + "/system-images/android-" + ANDROID_VERSION + "/"); unzip(platformToolsZipPath, androidSdkRoot); unzip(skdToolsZipPath, androidSdkRoot); + + //BUILD TOOLS String buildTools = androidSdkRoot + "/build-tools/"; String buildToolsFolder = buildTools + BUILD_TOOLS + "/"; new File(buildToolsFolder).delete(); @@ -115,6 +121,8 @@ public class SDKDownloader { delete(platformToolsZipPath); delete(skdToolsZipPath); delete(buildToolsZipPath); + delete(armImage); + delete(x86Image); } private static void download(String urlString, String output) { diff --git a/compiler/android-tests/src/org/jetbrains/kotlin/android/tests/emulator/Emulator.java b/compiler/android-tests/src/org/jetbrains/kotlin/android/tests/emulator/Emulator.java index 36e754de6b8..6a0ef6e11ff 100644 --- a/compiler/android-tests/src/org/jetbrains/kotlin/android/tests/emulator/Emulator.java +++ b/compiler/android-tests/src/org/jetbrains/kotlin/android/tests/emulator/Emulator.java @@ -31,12 +31,17 @@ import java.util.regex.Pattern; public class Emulator { + public static final String ARM = "arm"; + public static final String X86 = "x86"; + private final static Pattern EMULATOR_PATTERN = Pattern.compile("emulator-([0-9])*"); private final PathManager pathManager; + private String platform; - public Emulator(PathManager pathManager) { + public Emulator(PathManager pathManager, String platform) { this.pathManager = pathManager; + this.platform = platform; } private GeneralCommandLine getCreateCommand() { @@ -52,9 +57,16 @@ public class Emulator { commandLine.addParameter(pathManager.getAndroidEmulatorRoot()); commandLine.addParameter("-t"); commandLine.addParameter("1"); + + commandLine.addParameter("-b"); + commandLine.addParameter(getEmulatorAbi()); return commandLine; } + private String getEmulatorAbi(){ + return platform == X86 ? "x86" : "armeabi-v7a"; + } + private GeneralCommandLine getStartCommand() { GeneralCommandLine commandLine = new GeneralCommandLine(); String emulatorCmdName = SystemInfo.isWindows ? "emulator.exe" : "emulator"; @@ -83,13 +95,13 @@ public class Emulator { } @Nullable - private static GeneralCommandLine getStopCommand() { + private GeneralCommandLine getStopCommand() { if (SystemInfo.isWindows) { GeneralCommandLine commandLine = new GeneralCommandLine(); commandLine.setExePath("taskkill"); commandLine.addParameter("/F"); commandLine.addParameter("/IM"); - commandLine.addParameter("emulator-arm.exe"); + commandLine.addParameter("emulator-" + platform + ".exe"); return commandLine; } return null; @@ -137,7 +149,8 @@ public class Emulator { if (SystemInfo.isWindows) { OutputUtils.checkResult(RunUtils.execute(getStopCommand())); } - finishProcess("emulator-arm"); + finishProcess("emulator64-" + platform); + finishProcess("emulator-" + platform); } //Only for Unix @@ -207,7 +220,7 @@ public class Emulator { } else { if (!isDdmsStopped && SystemInfo.isUnix) { - finishProcess("emulator-arm"); + stopEmulator(); stopDdmsProcess(); isDdmsStopped = true; }