Skip to content

Latest commit

 

History

History
389 lines (197 loc) · 8.38 KB

README.md

File metadata and controls

389 lines (197 loc) · 8.38 KB

コマンドなしでぼくはAndroid開発できない話

資料

概要

注意事項

資料内のコマンドにpackageName
と書かれている部分は
アプリのパッケージ名に
置き換えてお試しください!

Androidでコマンド?🤔

Androidでコマンド使えるようになりたーい😆

できます😊

使えるようになるために

  • Android SDKまわりにちょっとPathを通すだけ
  • 基本、それだけ!

Android SDK周りのどこにPath通せばいいのか

  • sdk/tools
  • sdk/tools/bin
  • sdk/platform-tools
  • sdk/build-tools/
  • sdk/platform-tools/systrace (おまけ)

コマンド使いやすくするぞ💪

adb-peco

adb-peco

adb-peco

過去に使ったコマンドをインクリメントに調べて使う

adb

  • Android Debug Bridge

adb

実機とエミュレータでは実行できるコマンドは違う

  • 実機にはないけどエミュレータには入ってるコマンドはそこそこある
  • セキュリティ上の理由なのかな?

ネットワーク越しでコマンドを実行する

  • adb shell ip addr show wlan0 | grep 'inet ' | cut -d' ' -f6|cut -d/ -f1
  • ip部分だけ取り出す
  • adb tcpip 5555
  • adb connect ip:5555

AndroidWiFiADB

input text

  • 文字入力めっちゃ簡単になる最強コマンド✨

input text

  • adb shell input text droidkaigi2017

input keyevent

  • Key eventを発行できる

input keyevent

  • adb shell input keyevent KEYCODE_POWER
  • 電源キー押す
  • adb shell input keyevent KEYCODE_SLEEP
  • スクリーンOFF

adb shell inputのコード

http://tools.oesf.biz/android-7.1.1_r1.0/xref/frameworks/base/cmds/input/src/com/android/commands/input/Input.java

reboot

  • 再起動コマンド
  • adb shell reboot

am

am start

  • Activityをスタートさせるもの

am start

am broadcast

  • Broadcastを実行するコマンド

am broadcast

  • adb shell am broadcast -a com.android.systemui.BATTERY_LEVEL_TEST
  • 電池残量0〜100%の画像をアニメーションで確認できる!
  • 使わないだろー😇

am hang

  • 今やらないようにねw
  • hangするので
  • hangしてどうしようもなくなったらadb shell rebootですよ!

am Source Code

pm

pm

  • PackageManager

pm path

  • 指定したパッケージ名のapkの場所を教えてくれる
  • adb shell pm path packageName

pm clear

  • アプリケーションのデータをクリアする
  • adb shell pm clear packageName

pm list

  • adb shell pm list packages
  • adb shell pm list packages -e
  • adb shell pm list packages -d
  • adb shell pm list packages -s
  • adb shell pm list packages -3

pm source code

dumpsys

dumpsys

  • システムサービスの状態をダンプ
  • 色々含めて動作チェックしたい時にめっちゃ便利

dumpsys

  • adb shell dumpsys -l
  • これでsystem serviceの一覧が見える
  • 気になるSystem Serviceを探す

adb shell dumpsys activity

  • Activityの情報をdumpする
  • adb shell dumpsys activity

adb shell dumpsys activity top

  • adb shell dumpsys activity top
  • 今表示してるActivityの情報が見える!
  • レイアウトの構造も見れる!
  • FragmentManagerの情報もdumpされる

adb shell dumpsys activity top

  • 新しいプロジェクトや見知らぬコードを読む時に役立つ
  • この画面ってどのActivity? どのFragment? みたいなことを調べるのに最適
  • 人様のアプリのViewの構造を調べるのに最適

dumpsys usagestats

  • adb shell dumpsys usagestats

adb shell dumpsys dbinfo

  • adb shell dumpsys dbinfo
  • adb shell dumpsys dbinfo packageName
  • 実行したSQLとかの履歴が見える
  • テーブル構造丸裸問題🙈

log

log

  • logcatに任意のlogを打ち込む
  • shell log DroidKaigi2017やってくぞ!
  • とある操作の範囲のlogcatを見たい時などに
操作の始めと終わりにlogを打つとかに便利

run-as

run-as

  • 実行するプロセスを変える?
  • adb shell run-as packageName
  • /data/data/packageName配管のファイルを見たい時に便利

run-as source code

bugreport

bugreport

  • adb bugreport

bugreportz

  • adb shell bugreportz
  • bugreportをzip化したものが作れる
  • bugreportはものすごくでかい

bugreportz

  • 以下に書き出される
    • /data/user_de/0/com.android.shell/files/bugreports
  • OK:/data/user_de/0/com.android.shell/files/bugreports/bugreport-NPG05D-2017-03-10-07-41-37.zip
  • 生成されたらadb pullして取り出す

bugreportz Source Code

adb uninstall

  • adb uninstall packageName
  • アプリをアンインストールする

データとキャッシュを残したままアンインストールする

  • adb shell cmd package uninstall -k packageName

その他いっぱいありますよ!

コマンド応用していくぞ💪

特定のアプリのSetting画面をコマンドで一発で出す!!

  • shell am start -a android.settings.APPLICATION_DETAILS_SETTINGS -d package:com.souzoh.android.atte

インストールされているパッケージ名をソートして出す!

  • adb shell pm list packages | sed 's@^package:@@g' | sort

apk引っこ抜くことに全力を尽くした!

  • adb shell dumpsys activity activities | grep apkを改造してpecoと合わせて選択してpullするやつ作る

apk引っこ抜くことに全力を尽くした!

adb shell dumpsys activity activities | grep apk | sed -e 's/ *baseDir=//g' | peco | xargs adb pull

apk引っこ抜くことに全力を尽くした!

dryrun

コマンド周りのsource code

コマンドの実体を調べる方法

  • logcatを見る
  • コマンドの出力結果から固定値っぽいものを見つけて、それを出力してる処理を探す
  • そこからどんどん掘り下げていく
  • ソースコードから頑張って探す!

コマンドラインツールを色んな言語で作るための素材

Android Command Note

Thanks!!