Roman Nurik(github:romannurik)さんのenvリポジトリにAndroidのコマンドに関する知見があった話

Android Asset Studioとかを作ったGoogleのRoman Nurikさん。

Roman Nurik(github:romannurik)さんのenvってリポジトリを眺めてたらAndroidに関するコマンドがいくつかあった。

その中で「これは使えるかもなー」と思ったものを紹介。

紹介したもの以外でもためになりそう or 知見!!っぽいのはあるので見てみるといいよー

github.com

android-resize - 端末の解像度を変更する adb shell wm sizeのShell Script

adb shell wm sizeはとりあえず端末の解像度を変更できるすげーもん!だと思ってもらえればいい。

確かAndroid 4.3くらいから使えるやつだった気がするなーどうだろー。内部ではWindowManagerゴニョゴニョしてるだけ。

以下のQiitaとか見てもらえればいいかな。

qiita.com

んで、そのadb shell wm sizeのラッパー的なものがandroid-resizeってShell Scriptで書いてあった。

中身は以下のような感じ。

#!/bin/sh
if [[ ("$1" != "4" && "$1" != "5" && "$1" != "7" && "$1" != "reset") ]]; then
  echo "Usage: `basename $0` <size (4|5|7|reset)> <optional orientation (land|port)>" >&2
  exit
fi

adb root

PREFIX="adb shell wm size"
#PREFIX="adb shell am display-size"

case "$1" in
  4)
    W=1280
    H=768
    ;;
  5)
    W=1280
    H=720
    ;;
  7)
    W=1920
    H=1200
    ;;
  reset)
    COMMAND="$PREFIX reset"
esac

if [ -z "$COMMAND" ]; then
  case "$2" in
    port)
      COMMAND="$PREFIX ${H}x${W}"
      ;;
    *)
      COMMAND="$PREFIX ${W}x${H}"
      ;;
  esac
fi

echo $COMMAND
$COMMAND

env/android-resize at master · romannurik/env · GitHub

数字の割り当てや解像度の数値は自分に合った感じでカスタマイズすれば使えそう!

ちなみに、adb rootがあるのが気になるけど、使うならこれは消しておいた方がいいね...

android-screen-gif - screenrecordの結果をanimation gifに変換してくれるShell Script

Android 4.4から追加されてるscreenrecordを使って、その結果のmp4をanimation gifに変換するものがandroid-screen-gifってShell Scriptで書いてあった。

android-screen-gifって打って、端末で録画したい操作をして、終わりにしたかったらターミナルでなんかキーを打つと録画した内容をanimation gifにしてくれるすぐれもの。

中身は以下のような感じ。

#!/bin/bash
NAME=screencap
if [[ "$1" != "" ]]; then
  NAME="$1"
fi
adb shell screenrecord --bit-rate=20M "/sdcard/$NAME.mp4" &
PID=$!
echo $PID
read -n1 -r -p "Press any key to stop" key
kill -SIGHUP $PID
sleep 0.2
adb pull "/sdcard/$NAME.mp4" && gifify -np 360:640 -r 16 -o "$NAME" "$NAME.mp4"
adb shell rm "/sdcard/$NAME.mp4"

env/android-screen-gif at master · romannurik/env · GitHub

mp4をanimation gifに変換するためにgififyというものを使ってるけど、多分以下を使ってるんじゃないかなーと推測。

github.com

gififyのオプションがそのままだと動かなかったので以下のように-npオプションを-pオプションに変えたらうまく動いた。

adb pull "/sdcard/$NAME.mp4" && gifify -p 360:640 -r 16 -o "$NAME" "$NAME.mp4"

あと、sleepが0.2だとうまく動かなかったのでsleep 1に変えたらうまく動いた。それでもさらにダメそうだったらここのsleep伸ばしてみるといいかも。

これと似たことができるGUI Toolを使っていつもやってたけど、こっちの方がターミナルでできるに楽かもなー。

まとめ

adb厨、adb shell厨な私としてはこーゆーのすげー好き!!