@Override public Boolean call() throws Exception { String deviceName = device.getName(); boolean isInstalled = false; device.connect(timeoutInMs, logger); if (testedApks.size() > 1 && device.getApiLevel() < 21) { throw new InstallException("Internal error, file a bug, multi-apk applications" + " require a device with API level 21+"); if (device.getApiLevel() >= 21) { device.installPackages(testedApks, device.installPackage(testedApks.get(0), if (device.getApiLevel() >= 21) { device.installPackages(ImmutableList.of(testApk), device.installPackage(testApk, device.executeShellCommand("run-as " + testData.getTestedApplicationId() + " cat " + coverageFile + " | cat > " + temporaryCoverageCopy, outputReceiver, 30, TimeUnit.SECONDS); device.pullFile( temporaryCoverageCopy, new File(coverageDir, FILE_COVERAGE_EC).getPath()); device.executeShellCommand("rm " + temporaryCoverageCopy, outputReceiver,
@TaskAction public void uninstall() throws DeviceException { final Logger logger = getLogger(); final String applicationId = variant.getApplicationId(); logger.info("Uninstalling app: {}", applicationId); final DeviceProvider deviceProvider = new ConnectedDeviceProvider(getAdbExe(), getTimeOutInMs(), getILogger()); deviceProvider.init(); final List<? extends DeviceConnector> devices = deviceProvider.getDevices(); for (DeviceConnector device : devices) { device.uninstallPackage(applicationId, getTimeOutInMs(), getILogger()); logger.lifecycle( "Uninstalling {} (from {}:{}) from device '{}' ({}).", applicationId, getProject().getName(), variant.getVariantConfiguration().getFullName(), device.getName(), device.getSerialNumber()); } int n = devices.size(); logger.quiet("Uninstalled {} from {} device{}.", applicationId, n, n == 1 ? "" : "s"); }
@NonNull String projectName, @NonNull String variantName) { int deviceApiLevel = device.getApiLevel(); if (deviceApiLevel == 0) { logger.info("Skipping device '%1$s' for '%2$s:%3$s': Unknown API Level", device.getName(), projectName, variantName); return false; String deviceCodeName = device.getApiCodeName(); if (deviceCodeName != null) { if (!deviceCodeName.equals(appMinSdkVersion.getCodename())) { logger.info( "Skipping device '%1$s', due to different API preview '%2$s' and '%3$s'", device.getName(), deviceCodeName, appMinSdkVersion.getCodename()); return false; logger.info( "Skipping device '%s' for '%s:%s': minSdkVersion [%s] > deviceApiLevel [%d]", device.getName(), projectName, variantName, appMinSdkVersion.getApiString(), deviceApiLevel);
"Skipping device '{}' for '{}:{}': Could not find build of variant " + "which supports density {} and an ABI in {}", device.getName(), projectName, variantName, device.getDensity(), Joiner.on(", ").join(device.getAbis())); } else { getLogger().lifecycle( "Installing APK '{}' on '{}' for {}:{}", FileUtils.getNamesAsCommaSeparatedList(apkFiles), device.getName(), projectName, variantName); Objects.firstNonNull(installOptions, ImmutableList.<String>of()); if (apkFiles.size() > 1 || device.getApiLevel() >= 21) { device.installPackages(apkFiles, extraArgs, getTimeOutInMs(), getILogger()); successfulInstallCount++; } else { device.installPackage(apkFiles.get(0), extraArgs, getTimeOutInMs(), getILogger());
final Map<DeviceConnector, ImmutableList<File>> availableDevices = new HashMap<DeviceConnector, ImmutableList<File>>(); for (final DeviceConnector device : deviceList) { if (device.getState() != IDevice.DeviceState.UNAUTHORIZED) { if (InstallUtils.checkDeviceApiLevel( device, testData.getMinSdkVersion(), logger, projectName, variantName)) { device.getName(), projectName, variantName); continue;
private void uninstall(@NonNull File apkFile, @Nullable String packageName, @NonNull String deviceName) throws DeviceException { if (packageName != null) { logger.verbose("DeviceConnector '%s': uninstalling %s", deviceName, packageName); device.uninstallPackage(packageName, timeoutInMs, logger); } else { logger.verbose( "DeviceConnector '%s': unable to uninstall %s: unable to get package name", deviceName, apkFile); } }
private void uninstall(@NonNull File apkFile, @Nullable String packageName, @NonNull String deviceName) throws DeviceException { if (packageName != null) { logger.verbose("DeviceConnector '%s': uninstalling %s", deviceName, packageName); device.uninstallPackage(packageName, timeoutInMs, logger); } else { logger.verbose("DeviceConnector '%s': unable to uninstall %s: unable to get package name", deviceName, apkFile); } } }
@Override public Boolean call() throws Exception { String deviceName = device.getName(); boolean isInstalled = false; device.connect(timeoutInMs, logger); if (testedApks.size() > 1 && device.getApiLevel() < 21) { throw new InstallException("Internal error, file a bug, multi-apk applications" + " require a device with API level 21+"); if (device.getApiLevel() >= 21) { device.installPackages(testedApks, installOptions, timeoutInMs, logger); } else { device.installPackage(testedApks.get(0), installOptions, timeoutInMs, logger); if (device.getApiLevel() >= 21) { device.installPackages( ImmutableList.of(testApk), installOptions,timeoutInMs, logger); } else { device.installPackage(testApk, installOptions, timeoutInMs, logger); device.executeShellCommand("run-as " + testData.getTestedApplicationId() + " cat " + coverageFile + " | cat > " + temporaryCoverageCopy, outputReceiver, 30, TimeUnit.SECONDS); device.pullFile( temporaryCoverageCopy, new File(coverageDir, deviceName + "-" + FILE_COVERAGE_EC).getPath()); device.executeShellCommand("rm " + temporaryCoverageCopy,
@TaskAction public void uninstall() throws DeviceException { final Logger logger = getLogger(); final String applicationId = variant.getApplicationId(); logger.info("Uninstalling app: {}", applicationId); final ILogger lifecycleLogger = new LoggerWrapper(getLogger(), LogLevel.LIFECYCLE); final DeviceProvider deviceProvider = new ConnectedDeviceProvider(getAdbExe(), lifecycleLogger); deviceProvider.init(); final List<? extends DeviceConnector> devices = deviceProvider.getDevices(); for (DeviceConnector device : devices) { device.uninstallPackage(applicationId, getTimeOutInMs(), getILogger()); logger.lifecycle( "Uninstalling {} (from {}:{}) from device '{}' ({}).", applicationId, getProject().getName(), variant.getVariantConfiguration().getFullName(), device.getName(), device.getSerialNumber()); } int n = devices.size(); logger.quiet("Uninstalled {} from {} device{}.", applicationId, n, n == 1 ? "" : "s"); }
@NonNull String projectName, @NonNull String variantName) { int deviceApiLevel = device.getApiLevel(); if (deviceApiLevel == 0) { logger.info("Skipping device '%1$s' for '%2$s:%3$s': Unknown API Level", device.getName(), projectName, variantName); return false; String deviceCodeName = device.getApiCodeName(); if (deviceCodeName != null) { if (!deviceCodeName.equals(appMinSdkVersion.getCodename())) { logger.info( "Skipping device '%1$s', due to different API preview '%2$s' and '%3$s'", device.getName(), deviceCodeName, appMinSdkVersion.getCodename()); return false; logger.info( "Skipping device '%s' for '%s:%s': minSdkVersion [%s] > deviceApiLevel [%d]", device.getName(), projectName, variantName, appMinSdkVersion.getApiString(), deviceApiLevel);
private void uninstall(@NonNull File apkFile, @Nullable String packageName, @NonNull String deviceName) throws DeviceException { if (packageName != null) { logger.verbose("DeviceConnector '%s': uninstalling %s", deviceName, packageName); device.uninstallPackage(packageName, timeoutInMs, logger); } else { logger.verbose("DeviceConnector '%s': unable to uninstall %s: unable to get package name", deviceName, apkFile); } } }
@Override public Boolean call() throws Exception { final String deviceName = device.getName(); boolean isInstalled = false; CustomTestRunListener runListener = null; try { device.connect(timeoutInMs, logger); logger.verbose("Connected to %s to run tests", deviceName); synchronized (ShardedTestCallable.class) { logger.verbose("DeviceConnector '%s': installing %s", deviceName, Joiner.on(',').join(testedApks)); if (testedApks.size() > 1 && device.getApiLevel() < 21) { throw new InstallException( "Internal error, file a bug, multi-apk applications" + " require a device with API level 21+"); if (device.getApiLevel() >= 21) { device.installPackages(testedApks, device.installPackage(testedApks.get(0), if (device.getApiLevel() >= 21) { device.installPackages(ImmutableList.of(testApk), device.installPackage(testApk, logger.verbose("DeviceConnector '%s': fetching coverage data from %s", deviceName, coverageFile);