我想要做的是捕获设备序列号并将它们存储在数组或列表中。然后我想在我连接到我的系统的各种Android设备上安装我的apk。我正在尝试制作一个可以为我做这个的perl脚本。
这样的事情:
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) {
system($adbcommand_devices);
system($adbcommand_install);
}
else {
print "Device is offline\n";
}
序列号应来自当前连接的设备。
答案 0 :(得分:2)
以下是使用IPC::Run3
的adb devices
命令的示例:
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;
}
对于其中很多内容,您也可以使用qx
/``
。例如,您可以将run3
替换为my $adb_out = `$ADB_PATH devices`;
(因为您不需要将任何内容传递给它,只需输出,也不需要避免使用shell。)