try { executeShellCommand("am get-config", receiver, 5, TimeUnit.SECONDS); return DeviceConfig.Builder.parse(output); } catch (Exception e) { throw new DeviceException(e); }
@Override public String getName() { return scope.getTaskName(deviceProvider.getName()); }
@NonNull @Override public DeviceConfig getDeviceConfig() throws DeviceException { final List<String> output = new ArrayList<String>(); final MultiLineReceiver receiver = new MultiLineReceiver() { @Override public void processNewLines(String[] lines) { output.addAll(Arrays.asList(lines)); } @Override public boolean isCancelled() { return false; } }; try { executeShellCommand("am get-config", receiver, mTimeout, mTimeUnit); return DeviceConfig.Builder.parse(output); } catch (Exception e) { throw new DeviceException(e); } } }
@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);
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); } }
@TaskAction public void sendToServer() { testServer.uploadApks(getVariantName(), getTestApk(), getTestedApk()); }
@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"); }
public static Response send(Sale sale) throws DeviceException { try( Socket socket = new Socket(addr, 9999); DataInputStream is = new DataInputStream(socket.getInputStream()); DataOutputStream os = new DataOutputStream(socket.getOutputStream()); ) { StringWriter writer = new StringWriter(); Marshaller marshaller = JAXBContext.newInstance(Sale.class).createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); marshaller.marshal(sale, writer); os.writeUTF(writer.toString()); Unmarshaller unmarshaller = JAXBContext.newInstance(Response.class).createUnmarshaller(); Response response = (Response)unmarshaller.unmarshal(new StringReader(is.readUTF())); return response; } catch(IOException | JAXBException e) { e.printStackTrace(); } throw new DeviceException(); }
@NonNull @Override public DeviceConfig getDeviceConfig() throws DeviceException { final List<String> output = new ArrayList<String>(); final MultiLineReceiver receiver = new MultiLineReceiver() { @Override public void processNewLines(String[] lines) { output.addAll(Arrays.asList(lines)); } @Override public boolean isCancelled() { return false; } }; try { executeShellCommand("am get-config", receiver, 5, TimeUnit.SECONDS); return DeviceConfig.Builder.parse(output); } catch (Exception e) { throw new DeviceException(e); } } }
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); } } }
@NonNull @Override public String getName() { return scope.getTaskName(deviceProvider.getName()); }
@Override public void installPackage(@NonNull File apkFile, @NonNull Collection<String> options, int timeout, ILogger logger) throws DeviceException { try { iDevice.installPackage(apkFile.getAbsolutePath(), true /*reinstall*/, options.isEmpty() ? null : options.toArray(new String[options.size()])); } catch (Exception e) { logger.error(e, "Unable to install " + apkFile.getAbsolutePath()); throw new DeviceException(e); } }
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 void installPackage(@NonNull File apkFile, @NonNull Collection<String> options, int timeout, ILogger logger) throws DeviceException { try { iDevice.installPackage(apkFile.getAbsolutePath(), true /*reinstall*/, options.isEmpty() ? null : options.toArray(new String[options.size()])); } catch (Exception e) { logger.error(e, "Unable to install " + apkFile.getAbsolutePath()); throw new DeviceException(e); } }
@Override public void uninstallPackage(@NonNull String packageName, int timeout, ILogger logger) throws DeviceException { try { iDevice.uninstallPackage(packageName); } catch (Exception e) { logger.error(e, "Unable to uninstall " + packageName); throw new DeviceException(e); } }
@Override public void uninstallPackage(@NonNull String packageName, int timeout, ILogger logger) throws DeviceException { try { iDevice.uninstallPackage(packageName); } catch (Exception e) { logger.error(e, "Unable to uninstall " + packageName); throw new DeviceException(e); } }
@Override public void installPackages(@NonNull List<File> splitApkFiles, @NonNull Collection<String> options, int timeoutInMs, ILogger logger) throws DeviceException { List<String> apkFileNames = Lists.transform(splitApkFiles, new Function<File, String>() { @Override public String apply(@Nullable File input) { return input != null ? input.getAbsolutePath() : null; } }); try { iDevice.installPackages(apkFileNames, timeoutInMs, true /*reinstall*/, options.isEmpty() ? null : options.toArray(new String[options.size()])); } catch (Exception e) { logger.error(e, "Unable to install " + Joiner.on(',').join(apkFileNames)); throw new DeviceException(e); } }
@Override public void installPackages(@NonNull List<File> splitApkFiles, @NonNull Collection<String> options, int timeoutInMs, ILogger logger) throws DeviceException { try { iDevice.installPackages(splitApkFiles, true /*reinstall*/, ImmutableList.copyOf(options), timeoutInMs, TimeUnit.MILLISECONDS); } catch (Exception e) { List<String> apkFileNames = Lists.transform( splitApkFiles, input -> input != null ? input.getAbsolutePath() : null); logger.error(e, "Unable to install " + Joiner.on(',').join(apkFileNames)); throw new DeviceException(e); } }