リモートADBシェルは、ネットワーク経由で他のAndroidデバイスのADBシェルサービスに接続し、ターミナルコマンドを実行できるようにするターミナルアプリです。これは、Androidデバイスのリモートデバッグ(top、logcat、dumpsysなどのツールの実行)に役立ちます。異なるデバイスへの複数の同時接続をサポートし、アプリがバックグラウンドにある場合でもこれらの接続を維持します。このアプリはどちらのデバイスにもrootを必要としませんが、rootはターゲットデバイスを構成するのに役立つ場合があります。ターゲットデバイスがルート化されていない場合は、AndroidSDKおよびGoogleUSBドライバーを備えたコンピューターを使用してそれらを構成する必要があります(詳細は以下を参照)。
このアプリは、ADBを介して公開されるシェルのラッパーです。コマンドボックスを長押しすることでアクセスできる15のコマンド履歴を保持します。ターミナルディスプレイ自体を長押しすると、Ctrl + Cを送信するか、自動スクロールを切り替えるか、ターミナルセッションを終了するかを選択できます。
これは、「adbshell」コマンドがコンピューターで機能するのとまったく同じように機能します。このアプリはJavaでのADBプロトコルのネイティブ実装を使用しているため、デバイス上のrootや、ターゲットデバイス上のサードパーティアプリは必要ありません。デバイスは、AndroidSDKからADBクライアントを実行しているコンピューターと同じプロトコルを相互に話すだけです。
重要:Android 4.2.2以降を実行しているデバイスは、RSAキーを使用してADB接続を認証します。私のテストでは、4.2.2を実行しているデバイスは、(このアプリがインストールされている各デバイスから)初めてコンピューターに接続するときにコンピューターに接続する必要があります。これにより、公開鍵受け入れダイアログを表示できます。このダイアログを受け入れる必要があります([このコンピューターから常に許可する]をオンにします)。 Android 4.3および4.4を実行しているデバイスは、コンピューターに接続していなくてもダイアログを表示するのに問題がないようです。したがって、これはAndroid4.2.2に固有の回避策のようです。
ルート化されていないストックターゲットを構成するには、Android SDKがインストールされているコンピューターにターゲットデバイスを接続し、AndroidSDKのplatform-toolsフォルダーから「adbtcpip5555」を実行します。これにより、ターゲットデバイスのポート5555でADBリスニングが開始されます。その後、デバイスのプラグを抜くことができ、再起動するまで適切に構成されたままになります。
ルート権限を取得されているデバイスの場合(必須ではありませんが)、いくつかの「ADB WiFi」アプリのいずれかをインストールして、ADBサーバーがネットワーク経由でリッスンできるようにすることができます。カスタムROMを搭載したデバイスには、[設定]の[開発者向けオプション]ペインでネットワーク経由でADBを有効にするオプションがある場合があります。これらの方法のいずれかを使用すると、このアプリでネットワークアクセスできるようにADBが適切に構成されます。最初の接続には、4.2.2の追加手順が引き続き必要です。
リモートAndroidデバイスに接続するには、デバイスのIPアドレスとポート番号(上記の例では5555)をリモートADBシェルに入力します。 [接続]をタップすると、デバイスへの接続と端末の起動が試行されます。
開発者:このアプリ用に作成したカスタムJava ADBライブラリは、https://github.com/cgutman/AdbLibのBSDライセンスの下でオープンソースです。
このアプリのソースは、Apacheライセンスの下で利用できます:https://github.com/cgutman/RemoteAdbShell