Akhil Latta Akhil Latta - 10 months ago 63
Perl Question

Perl script to store device serial number and install apk using adb

What I want to do is to capture the device serial numbers and store them in an array or list. Then I want to install my apk on various android devices that I connect to my system.I am trying to make a perl script that can do this for me.

Something like this:

if($ostype eq 'MSWin32') {

system("title Android");

$adbcommand_devices = "adb devices";

$adbcommand_install = "adb -s xxxxxxxx install HelloWorld.apk";

if(`adb -s xxxxxxxx get-state` =~ m/device/i) {

else {
print "Device is offline\n";

The serial number should come from the currently connected device.


Here is an example of just the adb devices command using IPC::Run3:

use strict;
use warnings qw(all);

use IPC::Run3;
use Carp qw(croak confess cluck);
use Data::Dumper;

my $ADB_PATH = '/path/to/adb';  # EDIT THIS

my @devices = get_devices();
print Dumper(\@devices);
exit 0;

# subs
sub get_devices {
    my $adb_out;
    run3 [$ADB_PATH, 'devices'], undef, \$adb_out, undef;
    $? and cluck "Warning: non-zero exit status from adb ($?)";

    my @res = $adb_out =~ m/^([[:xdigit:]]+) \s+ device$/xmg;
    return wantarray ? @res : \@res;

For a lot of this, you may be able to use qx/`` as well. E.g., you could replace the run3 with my $adb_out = `$ADB_PATH devices`; (because you didn't need to pass anything in to it, just out, and also didn't need to avoid the shell.)