全然更新しないうえ、ほったらかしになってたのでちょい更新
といっても、Androidの制御系のお話から離れちゃってるので、書けるネタあんまりないけど。
#付属コマンドまとめ
##adb
adb devices
言わずもがな。
adb root
root接続しなおすときに使う。
adb -s <device name> shell
デバイス名を指定してshellを実行する。d(デバイス用)、e(エミュレータ用)オプションもある。しかし、複数台接続して処理する場合、どちらも使えないのでsオプション一択。
adb connect <ipaddress>:<port>
端末をネットワーク経由で接続するときに使う。
adb logcat
androidのシステムログを取得するときに使う。これで取得できるのは、mainログ。vオプション指定で、イベントログと通話・通信ログが取得できる。時間指定をして測るときは、timeout <sec> adb logcat
を使う。
adbのよた話
adbは高負荷な通信に耐えられる設計になっておらず、そのバグは未解決のまま。例えば、adb経由でデバイスとTCP通信を行い、アプリケーションをインストール&アンインストールする動作をさせるとする。100回前後で、TCP通信がデバイス側で強制切断される。これは、デバイスを再起動&adb(server)を再起動すると戻る。(確認済。誰も修正しないバグ。)
adb-server1つに対して、adb-clientは複数あります。複数デバイスを同時間に動かすプログラムを作る時、adb-serverとadb-clientを1対1の関係にしないと、上記のバグが原因で全体に影響がでます。
そういう使い方する方、あんまりいないだろうけど。
(中の人はAndroidアプリケーションを作ることにまったく興味なく、AndroidアプリケーションやIOSアプリケーションなどを外からの制御により、コントロールすることに興味があるので、そういうことをしてます。)
##adb shell
adb shell ps
アプリケーションのprocess idを知るときに使う。
adb shell kill <pid>
アプリケーションを強制終了するときに使う。root権限が必要。
adb shell am start -a android.intent.action.VIEW -d http://hogehoge.com
Activityの起動(ACTION_VIEW + URL) 正直あまり使わない。
adb shell am start -n <package name>/<activity name>
Acitvityの起動 よく使う。特に何回も起動するときに重宝。大概、アプリケーションは強制終了する。
adb shell am startservice <package name>/<activity name>
サービス起動
adb shell am broadcast <package name>/<activity name>
ブロードキャスト送信
##aapt
appt d permissions hogehoge.apk
アプリケーションのpermissionとパッケージ名を知るときに使う。
appt d xmltree hogehoge.apk AndroidManifest.xml
アプリケーションのAndroidManifest.xmlの中身を知るときに使う。逆コンパイルせずにパッケージ名、アクティブ名を調べるときに便利。
#配布ツールまとめ
##apktool
apktool d hoge.apk
有名ツール。smaliファイルとAndroidManifest.xmlを取得するときに使う。
##androguard
androapkinfo.py -i hogehoge.apk
アプリケーションのMain Activity名とその他Activity名を知るときに使う。アプリケーションを100個ほど調べた結果、Activity名は「パッケージ名.{…}Activity」という形式が多い。しかし時々、「パッケージ名(一部省略).{…}Activity」というのがあった。
##taintdroid
androidアプリケーションの通信を調べるツール。OSコンパイルの際に組み込んで使う。精度はだいぶ低い。(と思われる)
##droidscope
OSに組み込む。使い方わからん。