25
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

adb shell inputで簡単ログイン

Last updated at Posted at 2017-03-18

先日、DroidKaigi2017@operandoOSさんが発表されていたコマンドなしでぼくはAndroid開発できない話の中でinputコマンドを初めて知ったので早速使ってみることにしました。

ログインを簡単に

アプリを開発しているとアプリのインストールやアンインストールを行うことが多く、その都度ログイン画面にIDとパスワードを入力するのは非常に面倒に感じていました。
そこでadb shell inputコマンドを使って楽をする方法を試してみました。
※一般的なユーザIDやパスワードを入力してログインする画面を想定しています。

input text : 文字列の入力

ユーザIDやパスワードを入力するための文字列送信を行います。
これは発表であった通りそのままinput textに渡すだけです。
基本的にはマルチバイト文字は入力できないので注意。

adb shell input text <文字列>

input tap : 入力フォームのフォーカスを取得

input text実行時に気づいたのがそもそも入力対象にフォーカスさせないといけないという問題。
ログインを自動化したいのにフォーカスさせるのだけ手動にしてしまってはあまり意味がないので座標を指定して画面上をタップしてフォーカスさせます。
※数値は入力ボックスの位置や端末によって調整する必要があります。

adb shell input tap 100 700

input keyevent : キーイベントの送信

ユーザIDからパスワードに遷移する際は以下のコマンドでTABキー押下を送信します。

adb shell input keyevent KEYCODE_TAB

次回からの入力を省略などのチェックボックスにチェックを付ける場合はスペースキーを送信します。

adb shell input keyevent KEYCODE_SPACE

入力後にログインを実行したい場合はエンターキーを送信します。

adb shell input keyevent KEYCODE_ENTER

まとめて実行

上記のコマンドを組み合わせて実行します。

adb shell "input tap 100 700 && input text <ユーザID> && input keyevent KEYCODE_TAB && input text <パスワード> && input keyevent KEYCODE_TAB && input keyevent KEYCODE_SPACE && input keyevent KEYCODE_ENTER"

流れとしては以下となります。コマンドの実行を待ってから次のコマンドを実行するように&&で接続しています。
1.input tap 100 700:ユーザID入力ボックスをタップしてフォーカス
2.input text <ユーザID>:ユーザIDを入力
3.input keyevent KEYCODE_TAB:パスワード入力ボックスにフォーカスを遷移
4.input text <パスワード>:パスワードを入力
5.input keyevent KEYCODE_TAB:次回からの入力を省略チェックボックスにフォーカスを遷移
6.input keyevent KEYCODE_SPACE:次回からの入力を省略チェックボックスにチェックをつける
7.input keyevent KEYCODE_ENTER:ログイン実行

これでログイン画面からコマンド一発でログインすることができました!
もっといい方法などがあれば教えてください。

25
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?