Potatotips 2015/07/14 @cattaka_net
メソッドを外部から無理やり叩く〜開発中だからできる荒技〜
Takao Sumitomo@cattaka_net
Potatotips 2015/07/14 @cattaka_net
自己紹介● 住友 孝郎(Takao Sumitomo)
● たぶんAndroidアプリ開発者
● その他
● 電子工作
● OpenCV
● 執筆(?)
● ウォンテッドリー株式会社所属
Potatotips 2015/07/14 @cattaka_net
センサーを使ったアプリを作れるよね
WiFi
加速度
Bluetooth
iBeacon
ローテーション
GPS
Potatotips 2015/07/14 @cattaka_net
デバイス内のメソッドを直接叩きたいときあるよね
Potatotips 2015/07/14 @cattaka_net
なんかこう、アプリ側でHTTPサーバーを立てて、、、
アプリ
動作確認したいメソッド
開発用のHTTPサーバー
Potatotips 2015/07/14 @cattaka_net
ブラウザからアクセスしたら処理を蹴ってくれるのとか、、、
アプリ
動作確認したいメソッド
開発用のHTTPサーバー
Potatotips 2015/07/14 @cattaka_net
できたら嬉しくないですか?
Potatotips 2015/07/14 @cattaka_net
というわけで作りました
Potatotips 2015/07/14 @cattaka_net
MethodHttpExporter● 目的のインスタンスをラップするコードを自動生成
● 独自スレッドでHTTPサーバーを建てる
● つまり開発用バックドア
アプリバックドアHTTP
Webブラウザ
叩く動作確認したい
メソッド
Potatotips 2015/07/14 @cattaka_net
仕組み● 目的のクラスへの設定
● 目的のクラスにアノテーションを付ける● 目的のメソッドにアノテーションを付ける
● APTがHTTPサーバーのソースをドカっと生成する
● HTTPサーバーを起動する● ずっと起動しておくならApplication#onCreateに。● 画面と連動ならActivity#onResume/onPauseに。
Potatotips 2015/07/14 @cattaka_net
目的のクラスとメソッドにアノテーションを入れる
Potatotips 2015/07/14 @cattaka_net
APTで生成されたHTTPサーバーを起動させる
Potatotips 2015/07/14 @cattaka_net
Activityの表示中のみ起動もできる
Potatotips 2015/07/14 @cattaka_net
DEMO
https://youtu.be/QiGnZH0YOvs
Potatotips 2015/07/14 @cattaka_net
まとめ● このライブラリ自体はどうでもいい
● AndroidはServerSocketが使える
● ローカルにHTTPサーバーを建てられる
● センサ系のややこしいものはオレオレデバッガを
作って開発の効率を上げましょう
● 間違ってもデバッガを入れたままリリースしないこと
Potatotips 2015/07/14 @cattaka_net
というtipsでした
Potatotips 2015/07/14 @cattaka_net
MethodHttpExporterで検索
Potatotips 2015/07/14 @cattaka_net
ご清聴ありがとうございました
Takao Sumitomo@cattaka_net