2012-01-12 2 views
0

私がしたいのは、デバイスのシリアル番号を取得し、アレイまたはリストに格納することです。それから私は私のシステムに接続する様々なアンドロイドデバイスに私のAPKをインストールしたい。私はこれを行うことができるPerlスクリプトを作ろうとしている。このようなデバイスのシリアル番号を格納し、adbを使用して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

[IPC :: Run3](http ://p3rl.org/IPC :: Run3)(またはIPC :: Run)はWindows上で動作します。これは、あなたの人生をはるかに簡単にします。私はそれがドキュメントからそうだと思う。それを使って「adbデバイス」からの出力を簡単に取り込むことができます。 – derobert

+0

あなたはthis.thanksにアプローチする方法のサンプルコードを提供してください。 –

+0

OK、(回答として)例を追加しました。 – derobert

答えて

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/``を使用することができます。たとえば、run3my $adb_out = `$ADB_PATH devices`;に置き換えることができます(これに何かを渡す必要はなく、シェルを避ける必要もないため)。

+0

ありがとうございます、私は現在PERLバージョン5.6.1を持っています.IPC :: Run3については、最低5.8必要です。私はこれをアップグレードして試してみます。 –

+0

@ Noble6:IPC :: Run3に対する5.8の依存関係はありますが(http://cpansearch.perl.org/src/RJBS/IPC-Run3-0.045/Makefile.PL)、もしあれば、古いバージョン(CPANのページから)をダウンロードできます(http://search.cpan.org/~rjbs/IPC-Run3-0.045/)。しかし、ええ、5.6.1はほぼ11歳です、あなたは本当にアップグレードする必要があります! – derobert

+0

5.6で、次のエラーが発生しました パッケージ 'IPC-Run3'をインストールしています... http://ppm.activestate.com/PPMPackages/5.6/MSWin32-x86-multi-thread/IPC-Run3-0.030をダウンロードしています。 tar.gz ... パッケージ 'IPC-Run3'のインストール中にエラーが発生しました:http://ppm.activestate.com/PPMPackages/5.6/MSWin32-x86-multi-thread/IPC-Run3-0.030.tar.gzの読み取りエラーパッケージを解凍してインストールしようとすると、Test :: Moreの依存関係が表示されます。私はTest:Web上のMoreを見つけることができません。 –

関連する問題