Search in sources :

Example 1 with AdbRunner

use of com.android.tools.build.bundletool.device.AdbRunner in project bundletool by google.

the class InstallApksCommand method execute.

public void execute() {
    BuildApksResult toc = readBuildApksResult();
    validateInput(toc);
    AdbServer adbServer = getAdbServer();
    adbServer.init(getAdbPath());
    try (TempDirectory tempDirectory = new TempDirectory()) {
        DeviceSpec deviceSpec = new DeviceAnalyzer(adbServer).getDeviceSpec(getDeviceId());
        if (getDeviceTier().isPresent()) {
            deviceSpec = deviceSpec.toBuilder().setDeviceTier(Int32Value.of(getDeviceTier().get())).build();
        }
        if (getDeviceGroups().isPresent()) {
            deviceSpec = deviceSpec.toBuilder().addAllDeviceGroups(getDeviceGroups().get()).build();
        }
        final ImmutableList<Path> apksToInstall = getApksToInstall(toc, deviceSpec, tempDirectory.getPath());
        final ImmutableList<Path> filesToPush = ImmutableList.<Path>builder().addAll(getApksToPushToStorage(toc, deviceSpec, tempDirectory.getPath())).addAll(getAdditionalLocalTestingFiles().orElse(ImmutableList.of())).build();
        AdbRunner adbRunner = new AdbRunner(adbServer);
        InstallOptions installOptions = InstallOptions.builder().setAllowDowngrade(getAllowDowngrade()).setAllowTestOnly(getAllowTestOnly()).setTimeout(getTimeout()).build();
        if (getDeviceId().isPresent()) {
            adbRunner.run(device -> device.installApks(apksToInstall, installOptions), getDeviceId().get());
        } else {
            adbRunner.run(device -> device.installApks(apksToInstall, installOptions));
        }
        if (!filesToPush.isEmpty()) {
            pushFiles(filesToPush, toc, adbRunner);
        }
        if (toc.getLocalTestingInfo().getEnabled()) {
            cleanUpEmulatedSplits(adbRunner, toc);
        }
    }
}
Also used : DeviceSpec(com.android.bundle.Devices.DeviceSpec) Path(java.nio.file.Path) TempDirectory(com.android.tools.build.bundletool.io.TempDirectory) BuildApksResult(com.android.bundle.Commands.BuildApksResult) AdbRunner(com.android.tools.build.bundletool.device.AdbRunner) DeviceAnalyzer(com.android.tools.build.bundletool.device.DeviceAnalyzer) InstallOptions(com.android.tools.build.bundletool.device.Device.InstallOptions) AdbServer(com.android.tools.build.bundletool.device.AdbServer)

Example 2 with AdbRunner

use of com.android.tools.build.bundletool.device.AdbRunner in project bundletool by google.

the class ConnectedDeviceModeTransparencyChecker method checkTransparency.

public static TransparencyCheckResult checkTransparency(CheckTransparencyCommand command) {
    command.getAdbServer().get().init(command.getAdbPath().get());
    AdbRunner adbRunner = new AdbRunner(command.getAdbServer().get());
    Device adbDevice = getDevice(command.getAdbServer().get(), command.getDeviceId());
    // Execute a shell command to retrieve paths to all APKs for the given package name.
    AdbShellCommandTask adbShellCommandTask = new AdbShellCommandTask(adbDevice, "pm path " + command.getPackageName().get());
    ImmutableList<String> pathsToApksOnDevice = adbShellCommandTask.execute().stream().filter(path -> path.startsWith(APK_PATH_ON_DEVICE_PREFIX)).map(path -> path.substring(APK_PATH_ON_DEVICE_PREFIX.length())).collect(toImmutableList());
    if (pathsToApksOnDevice.isEmpty()) {
        throw InvalidCommandException.builder().withInternalMessage("No files found for package " + command.getPackageName().get()).build();
    }
    // Pull APKs to a temporary directory and verify code transparency.
    try (TempDirectory tempDir = new TempDirectory("connected-device-transparency-check")) {
        Path apksExtractedSubDirectory = tempDir.getPath().resolve("extracted");
        Files.createDirectory(apksExtractedSubDirectory);
        ImmutableList<FilePullParams> pullParams = createPullParams(pathsToApksOnDevice, apksExtractedSubDirectory);
        if (command.getDeviceId().isPresent()) {
            adbRunner.run(device -> device.pull(pullParams), command.getDeviceId().get());
        } else {
            adbRunner.run(device -> device.pull(pullParams));
        }
        return ApkTransparencyCheckUtils.checkTransparency(pullParams.stream().map(FilePullParams::getDestinationPath).collect(toImmutableList()));
    } catch (IOException e) {
        throw new UncheckedIOException(e);
    }
}
Also used : AdbRunner(com.android.tools.build.bundletool.device.AdbRunner) CheckTransparencyCommand(com.android.tools.build.bundletool.commands.CheckTransparencyCommand) FilePullParams(com.android.tools.build.bundletool.device.Device.FilePullParams) Files(java.nio.file.Files) ImmutableList.toImmutableList(com.google.common.collect.ImmutableList.toImmutableList) Device(com.android.tools.build.bundletool.device.Device) TimeoutException(java.util.concurrent.TimeoutException) IOException(java.io.IOException) UncheckedIOException(java.io.UncheckedIOException) DeviceAnalyzer(com.android.tools.build.bundletool.device.DeviceAnalyzer) TempDirectory(com.android.tools.build.bundletool.io.TempDirectory) ImmutableList(com.google.common.collect.ImmutableList) Paths(java.nio.file.Paths) InvalidCommandException(com.android.tools.build.bundletool.model.exceptions.InvalidCommandException) Optional(java.util.Optional) AdbShellCommandTask(com.android.tools.build.bundletool.device.AdbShellCommandTask) UncheckedTimeoutException(com.google.common.util.concurrent.UncheckedTimeoutException) Path(java.nio.file.Path) AdbServer(com.android.tools.build.bundletool.device.AdbServer) Path(java.nio.file.Path) TempDirectory(com.android.tools.build.bundletool.io.TempDirectory) AdbShellCommandTask(com.android.tools.build.bundletool.device.AdbShellCommandTask) AdbRunner(com.android.tools.build.bundletool.device.AdbRunner) Device(com.android.tools.build.bundletool.device.Device) UncheckedIOException(java.io.UncheckedIOException) IOException(java.io.IOException) UncheckedIOException(java.io.UncheckedIOException) FilePullParams(com.android.tools.build.bundletool.device.Device.FilePullParams)

Aggregations

AdbRunner (com.android.tools.build.bundletool.device.AdbRunner)2 AdbServer (com.android.tools.build.bundletool.device.AdbServer)2 DeviceAnalyzer (com.android.tools.build.bundletool.device.DeviceAnalyzer)2 TempDirectory (com.android.tools.build.bundletool.io.TempDirectory)2 Path (java.nio.file.Path)2 BuildApksResult (com.android.bundle.Commands.BuildApksResult)1 DeviceSpec (com.android.bundle.Devices.DeviceSpec)1 CheckTransparencyCommand (com.android.tools.build.bundletool.commands.CheckTransparencyCommand)1 AdbShellCommandTask (com.android.tools.build.bundletool.device.AdbShellCommandTask)1 Device (com.android.tools.build.bundletool.device.Device)1 FilePullParams (com.android.tools.build.bundletool.device.Device.FilePullParams)1 InstallOptions (com.android.tools.build.bundletool.device.Device.InstallOptions)1 InvalidCommandException (com.android.tools.build.bundletool.model.exceptions.InvalidCommandException)1 ImmutableList (com.google.common.collect.ImmutableList)1 ImmutableList.toImmutableList (com.google.common.collect.ImmutableList.toImmutableList)1 UncheckedTimeoutException (com.google.common.util.concurrent.UncheckedTimeoutException)1 IOException (java.io.IOException)1 UncheckedIOException (java.io.UncheckedIOException)1 Files (java.nio.file.Files)1 Paths (java.nio.file.Paths)1