STF を使ってブラウザ上から Android をいじってみた
STF is 何 ?
CyberAgent 社がオープンソースとして公開しているブラウザ上から Android を操作できるようになるやつ。
ブラウザ上から apk を install させたりもたしかできたはず
Android は様々な端末があり、
端末ごとに動作が違ったりで検証が大変 + 多数のプロダクトで Android アプリを開発していると端末の貸し借りが発生したりするので
端末の管理が大変という問題とか開発拠点が離れている場合などもあるのでそこら辺を解消できる。
なぜか使った記憶がありとても便利だった。(元社員だっただけです)
なぜやってみたか
@misyobun さんがやってたのを見て
そういえば弊社CTOのあんちぽさんに「導入しといて」って雑に振られたので
面白そうだし「わかりました」って言ったのを思い出したから
(2週間前くらいだっただろうか…)
さっそく導入
homebrew があると便利なので入れとくといいかと
- rethinkdb
- graphicsmagick
- zeromq
- protobuf
- yasm
- pkg-config
上記をまとめて install
brew install rethinkdb graphicsmagick zeromq protobuf yasm pkg-config
node.js を install
$ brew install node $ node -v v5.0.0
stf を install
$ npm install -g stf ... # node-gyp の install で error が発生した…
調べると node-gyp は最新の node に対応してないとかなんとか
なので node v0.12.7 を入れた
node の uninstall は下記で行う
$ brew uninstall node
もう一度 stf を install
$ npm install -g stf ... # pkg-config が見つけられないてきな error が発生した… # PKG_CONFIG_PATH を指定してやる (path は各々の環境に合わせてください) $ export PKG_CONFIG_PATH=/usr/local/Cellar/zeromq/4.1.3/lib/pkgconfig/ $ npm install -g stf
install 関連は終わり
stf を立ち上げる
まずは rethinkdb から
$ rethinkdb Recursively removing directory /hoge/rethinkdb_data/tmp Initializing directory /hoge/rethinkdb_data Running rethinkdb 2.1.5-2 (CLANG 7.0.0 (clang-700.0.72))... Running on Darwin 14.5.0 x86_64 Loading data from directory /Users/mac/rethinkdb_data ... ...
stf を立ち上げる
端末はUSBでつないでおく
$ stf local # ログがいっぱいでる
http://localhost:7100/ にアクセスすると下記のような画面が表示される
画像で「停止する」の部分が「準備中」になっていていくら待っても準備が完了しない…
log を見てみるとなにか失敗している
INF/device:resources:service 44364 [hoge] Installing STFService FTL/device 44364 [hoge] Setup had an error TimeoutError: operation timed out at afterTimeout (/usr/local/lib/node_modules/stf/node_modules/adbkit/node_modules/bluebird/js/main/timers.js:11:15) at timeoutTimeout (/usr/local/lib/node_modules/stf/node_modules/adbkit/node_modules/bluebird/js/main/timers.js:53:9) at Timer.listOnTimeout (timers.js:119:15)
STFService.apk の install が失敗してしまっている様子?
とりあえず手動で STFService.apk を install する
(adb コマンド is 何 って人はググってくれ!)
apk のソースは ここ にあるのでこれを build してもいいと思う
$ adb install /usr/local/lib/node_modules/stf/vendor/STFService/STFService.apk
これで stf を再起動してみたが同じエラーが出てたので USB を一度抜き挿ししたら端末を操作できるようになった。
結果は下記をみてください
簡単だったぞー pic.twitter.com/FQxPhcNcGM
— shiro16 (@_shiro16) 2015, 11月 3
最後に
結構簡単にできた。
RethinkDB触ったことないのでちょっといじってみるのは良さそう
実際にこれを会社で導入する場合 server 用意してそれに USB ハブを挿しまくるのだろう。
そこら辺はなんかいい感じに相談してみよう。
やはり便利だ。