Android開発で便利なエイリアス

Android開発に便利かなって思っているエイリアス環境を公開します。

`$ANDROID_SDK`の箇所は自分のAndroid SDKのパスを設定しておく必要があります。

## SDK Managerを起動する

Android Studioを立ち上げている時だったら1クリックで立ち上げられますが
Android StudioをSDK Managerのためだけに立ち上げるのは面倒です。

```
alias sdk=$ANDROID_SDK"/tools/android"
```

これで`sdk`と打ち込むだけで起動できます。

## ADBの再起動

USBでつながっているはずなのに急に認識しなくなったってときに
端末を抜き差しするのはなんかなって感じなのでADBを再起動させる。

```
alias readb="adb kill-server; adb start-server"
```

## スクリーンショットを撮影しファイルを開く

DDMSからスクリーンショットを取ることもできますが
サッと取りたいとき便利。
デスクトップに保存します。

```
function sshot() {
    file=$(date "+%Y%m%d-%H%M%S").png
    adb shell screencap -p /sdcard/$file
    adb pull /sdcard/$file ~/Desktop/$file
    adb shell rm /sdcard/$file
}
```

こうしておくことでファイル名の指定ができ複数枚取得しても上書きされることなく保存できます。

## 起動中のActivityを確認

プロジェクトが大きくなってくるとパッケージ名やクラス名で探すのに手間取ることがよくありますので、
今見ているActivity名を一瞬でわかるようにしておきます。

```
alias activitys="adb shell dumpsys activity | grep -B 1 "Run #[0-9]*:""
```

## Android Device Monitorを開く

Android Device Monitorを開けるようにしておきます。

```
alias monitor=$ANDROID_SDK"/tools/monitor"
```

## 9patchツールを起動

9patchツールって使うときは頻繁に使うので。

```
alias 9patch=$ANDROID_SDK"/tools/draw9patch"
```

## UI Automator

レイアウトを作成しているとき、なぜか上手く表示することができないってなったときには、
どのViewGroupのなかにいて、どういう設定値が入っているのか手軽に見れるようにしてます。

```
alias uiat=$ANDROID_SDK"/tools/uiautomatorviewer"
```

## Hierarchy Viewer

Viewの構造をみたいときに。

```
alias hierarchy=$ANDROID_SDK"/tools/hierarchyviewer"
```

## 動画の撮影

サッと端末上での動作を動画で撮影できるようにします。

```
alias rmovie="adb shell screenrecord /sdcard/movie.mp4"
```

### 動画の取り出し

```
function dmovie() {↲
    TIME=`date "+%s"`
    adb pull /sdcard/movie.mp4 $1
    mv movie.mp4 $(date "+%Y%m%d-%H%M%S").mp4
}
```

mp4だと大きくて困る場合はGifアニメーションでも出力できるようにしておきます。

簡単な手順で動画を取り出すこともできるのですが
そうするとファイルサイズが大きすぎるため一手間かけてあげます。
ffmpegとgifsicleが必要になるので
入っていない場合は先に入れておきます。

```
brew install ffmpeg
brew install gifsicle
```

今回は1MBに抑えられるように短い動画&小さいサイズで設定します。

```
function dmovie() {
  adb pull /sdcard/movie.mp4 $1;
  ffmpeg -i movie.mp4 -vf "scale=min(iw\,400):-1" -pix_fmt rgb24 -r 10 -f gif - | gifsicle --optimize=3 --delay=15 --colors 128 > movie.gif $1;
}
```

こんな感じで画像が作られました。

![movie.gif](https://qiita-image-store.s3.amazonaws.com/0/55151/074cf301-157d-aa96-fdf2-8d7257dd9b65.gif)

## おまけ

いろいろ設定してもあまり使わないコマンドは忘れちゃうので
毎回起動のたびにエイリアスを表示するようにしています。

```
echo "### Android Develop ###";
echo "sdk   readb   sshot  9patch  monitor";
echo "uiat  rmovie  dmovie  hierarchy";
echo "activitys";
```

### まとめ

以上の設定をzshrcに設定しています。

```
#SDK Manager
alias sdk=$ANDROID_SDK"/tools/android"
#ADBの再起動
alias readb="adb kill-server; adb start-server"
# スクリーンショットを撮影しファイルを開く
alias sshot=$ANDROID_SDK"/tools/screenshot2 ~/Desktop/screenshot.png; open ~/Desktop/screenshot.png";

# Android Monitorを開く
alias monitor=$ANDROID_SDK"/tools/monitor"
# 9patchツールを起動
alias 9patch=$ANDROID_SDK"/tools/draw9patch"
# UI Automator
alias uiat=$ANDROID_SDK"/tools/uiautomatorviewer"
# Hierarchy Viewer
alias hierarchy=$ANDROID_SDK"/tools/hierarchyviewer"
# 動画の撮影
alias rmovie="adb shell screenrecord /sdcard/movie.mp4"
# 動画の取り出し
function dmovie() {
  adb pull /sdcard/movie.mp4 $1;
  ffmpeg -i movie.mp4 -vf "scale=min(iw\,400):-1" -pix_fmt rgb24 -r 10 -f gif - | gifsicle --optimize=3 --delay=15 --colors 128 > movie.gif $1;
}

# ADB-PECO
alias adbp=$ANDROID_SDK"/tools/adb-peco/bin/adbp"
alias pidcatp=$ANDROID_SDK"/tools/adb-peco/bin/pidcatp"
alias adb="adbp"
alias pidcat="pidcatp"

# Android設定の表示
echo "### Android Develop ###";
echo "sdk   readb   sshot  9patch  monitor";
echo "uiat  rmovie  dmovie  hierarchy";
echo "activitys";