setup appium in Mac for Android

# 趣旨
mac環境でandroidスマホの実機テストを行う環境構築手順
CUI、GUI構築方法は２通りある。
ただ、iOSも同環境で構築することを想定して、安定するCUI環境で構築した。

# 準備するもの
-Mac (HighSierra)
-Android端末
-USBケーブル

# 設定
## 1. JDK
### install
Java SE Development Kit 8 をdownloadして、インストールする

download
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

### 環境変数
環境変数に以下を設定する
Mac環境次第ですが、例えば .bashrc

<TABLE BORDER=1>
<TR><TH>変数</TH><TH>意味 </TH></TR>
<TR><TD>JAVA_HOME  </TD><TD>Javaのinstall path <BR> (ex. export JAVA_HOME=`/usr/libexec/java_home` )</TD></TR>
<TR><TD>Path </TD><TD>実行フォルダのパス <BR>(ex. export PATH=\${JAVA_HOME}/bin:$PATH ) </TD></TR>
</TABLE>

### 実行確認
コマンドプロンプトを起動し、パスを確認する

```
java -version
```

## 2. Android Studio
### install
Android Stduioをdownloadして、インストールする

https://developer.android.com/studio/?hl=ja

### 環境変数
環境変数に以下を設定する

<TABLE BORDER=1>
<TR><TH>変数</TH><TH>意味 </TH></TR>
<TR><TD>ANDROID_HOME</TD><TD>androidのSDKのinstall path <BR> 「File」＞「Other Settings」＞「Default Setting Structure…」の"SDK location" <BR> (ex. export ANDROID_HOME=$HOME/Library/Android/sdk ) </TD></TR>
<TR><TD>Path </TD><TD>adb等の実行フォルダのパス <BR>(ex. export PATH=\$PATH:$ANDROID_HOME/platform-tools) </TD></TR>
</TABLE>


### 実行確認
コマンドプロンプトを起動し、パスを確認する

```
adb
```

## 3. Android Deviceの設定
appiumからandroid deviceへ接続許可設定をする
1 開発者モードにする
<IMG SRC="https://qiita-image-store.s3.amazonaws.com/0/267085/f865ce9e-fa59-94f5-e4ca-72312909dd67.png" width=30%> ビルド番号を数回タップすると、デベロッパーモードに切り替わる

2 開発者向けオプションを開く
<IMG SRC="https://qiita-image-store.s3.amazonaws.com/0/267085/62a458c6-84e1-30b3-aadb-53e4b8906662.png" width=30%>

3 USB接続の設定
<IMG SRC="https://qiita-image-store.s3.amazonaws.com/0/267085/f1f0c513-1c35-f4cf-c843-efef2dd7f4af.png" width=30%>USBデバッグ、スリープモード非設定（※任意）をOnにする

4 USB接続
USBで接続後、android device側で接続承認の確認が出てくるので、OKにする。

5 adb server 起動
コマンドプロンプトを立ち上げて、以下コマンドを実行する

```
adb devices
```

![image.png](https://qiita-image-store.s3.amazonaws.com/0/267085/054dbab3-f408-f484-d3f2-1bc01a5d616f.png)


これにより、接続したandroid deviceが正しく接続されていることを確認する

## 4. brew & npm
appiumをinstallするとき、npmコマンドを利用する。
defaultではmacに入っていないので、使えるようにする

### install brew

以下コマンドを実施

```
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
```

動作確認

```
brew -v
```

### install npm

```
brew install nodebrew
 
nodebrew install-binary latest
```

別のバージョンをinstallしたい場合、以下手順でinstallする
1 対応可能versionの確認

```
nodebrew ls-remote
```
実行例
<IMG SRC="https://qiita-image-store.s3.amazonaws.com/0/267085/87348698-cdf6-309e-85a1-a62a6a1345a5.png" width=70%>
2  version指定のinstall

```
nodebrew install v0.1.0
```


### nodebrewのversion指定

```
nodebrew list
```
ここで出てきたversion（もし別のバージョンを使う場合、それをinstallする）を確認

```
nodebrew use v9.4.0
```

実際に設定されてるかの確認

```
ls -l .nodebrew/
```
実行例
<IMG SRC="https://qiita-image-store.s3.amazonaws.com/0/267085/68aa74c0-27b0-1cc4-b802-992592861140.png" width=70%>
currentのsymbolic linkが希望したversionになっていることを確認できる

### pathの設定
pathを通す
ex. export PATH=\$PATH:$HOME/.nodebrew/current/bin

パスの確認

```
npm -v
```




## 5. appium

### install
androidに関しては、最新版のappiumで問題はない。
ただ、iOSもテストする環境として考えている場合、versionを注意したほうが良い。
自分が当時試したとき、最新版では動作しなかったのでversion指定でinstallした。

```
npm install -g appium@1.7.2
npm install -g appium-doctor
```

※ version指定しない場合

```
npm install -g appium
```

### 動作確認
```
appium-doctor
```
実行例
<IMG SRC="https://qiita-image-store.s3.amazonaws.com/0/267085/082e7600-bc89-0c44-02d3-4f2441f62f7d.png" Width=80%>

### 実行

```
appium
```

※起動オプションはこちら
http://appium.io/docs/en/writing-running-appium/server-args/
よく使うオプションとしては以下の通り


<TABLE BORDER=1>
<TR><TH>option </TH><TH>mean </TH></TR>
<TR><TD>-p xxxxx </TD><TD>port指定</TD></TR>
</TABLE>

実行例
<IMG SRC="https://qiita-image-store.s3.amazonaws.com/0/267085/92a4e8e5-62a2-bddf-ac8f-60f182836f61.png" Width=80%>

WEB経由でアクセスして、API状況を確認できる
```
ex) http://localhost:9999/wd/hub/status
```