ShellScript
Android
adb
スクリーンショット
android開発

MacでAndroid開発中に手軽にスクリーンショットを撮る

はじめに

Android開発に触れたばかりの時は、端末でスクリーンショットを撮り、それを何らかの手段で開発しているマシンに転送するという、どう考えても頭のおかしい方法でスクリーンショットを撮っておりました。。。

やり方

コマンドラインとかよく分からないなんて場合はAndroidStudioのUI上で撮影が出来ます。
とは言え、コマンドラインも一度登録しておけばワン・コマンドで実行できるのでこれを期に.bashrcに登録していただければと思います。

AndroidStudioで撮る

Andorid Monitorを開き、左側にあるカメラのアイコンをクリックすると接続されている端末のスクリーンショットが撮影できます。
image

こんな感じでウインドウが出てきて、撮影されたスクリーンショットが表示されます。
右クリックでコピーとかも出来ます。
image

コマンドで撮る

AndroidStudioで撮るのもだいぶ楽なのですが、スクリーンショット画像をそのまま簡単にコピーペーストする事を考えると、この方法が今の自分の中での最適解です。

前提として下記を満たしているものとします。

  • adbコマンドが使えるようになっている
  • 開発中のMacに接続されているAndroid端末(実機、エミュレーターは問わない)は1台である
#スクリーンショットを撮影し、端末内の/sdcard/screen.pngに保存
adb shell screencap -p /sdcard/screen.png

#端末内の/sdcard/screen.pngから撮ってきてローカルの/tmp/screen.pngに置く
adb pull /sdcard/screen.png /tmp/screen.png

#端末内の/sdcard/screen.pngは削除する
adb shell rm /sdcard/screen.png

#openコマンドでローカルの/tmp/screen.pngを開く
open /tmp/screen.png

こんな感じでプレビューが開き、撮られたスクリーンショットの表示までしてくれます。
image

ワンライナーだとこんな感じです。

ワンライナー
adb shell screencap -p /sdcard/screen.png;adb pull /sdcard/screen.png /tmp/screen.png;adb shell rm /sdcard/screen.png;open /tmp/screen.png

私は上記のワンライナーを.bashrcにaliasとして登録し、いつもワン・コマンドで実行しています。

.bashrc
alias screenshot="adb shell screencap -p /sdcard/screen.png;adb pull /sdcard/screen.png /tmp/screen.png;adb shell rm /sdcard/screen.png;open /tmp/screen.png"

ターミナルで実行するだけでスクリーンショットがプレビューで開かれます。

$ screenshot

おまけ 動画を撮りたい

4.4以上の端末だとscreenrecordコマンドを利用することでmp4動画を撮影することが出来るようです。
ffmpegを使ってgifへの変換が出来るようで調べたら記事がいっぱい出てきますが面倒な場合は変換は適当にどこかのWebサービスにお任せしてしまう方が楽です。
こんな感じで.bashrcに入れておくと幸せになれます。

.bashrc
alias screenrecord="adb shell screenrecord --bit-rate 10000000 /sdcard/screen.mp4; sleep 3; adb pull /sdcard/screen.mp4 /tmp/screen.mp4; adb shell rm /sdcard/screen.mp4; open /tmp/screen.mp4"

おわりに

これでQiitaやGithubに端末のスクショを載せるのも簡単に出来ます。
もっと楽な手段をご存じの方はぜひ教えて下さい。