你可能不知道指令可以做的事 @ Android 11 Meetups

你可能不知道指令可以做的事 @ Android 11 Meetups

ADB (Android Debug Bridge)
======================
* 簡介與基本操作
* Android 11 的新功能
* 進階用法

4cb35be1ef26ed4fb0dd2914ee8a4873?s=128

Shaka Huang

June 18, 2020
Tweet

Transcript

  1. 4.

    2019 | Confidential and Proprietary GDG Taichung ADB (Android Debug

    Bridge) • 簡介與基本操作 • Android 11 的新功能 • 進階用法
  2. 5.

    2019 | Confidential and Proprietary GDG Taichung ADB (Android Debug

    Bridge) • 簡介與基本操作 • Android 11 的新功能 • 進階用法
  3. 7.

    GDG Taichung 這是什麼? • Android Debug Bridge • 針對 apk

    (app) 進行安裝除錯 • 手機與電腦間的檔案傳輸 • 改變手機狀態
  4. 8.

    GDG Taichung 這是什麼? • Android Debug Bridge • 針對 apk

    (app) 進行安裝除錯 • 手機與電腦間的檔案傳輸 • 改變手機狀態 • 架構 ◦ Client (adb 指令本人) ◦ Server (電腦端負責 client 與 daemon 的溝通) ◦ Daemon (手機上接收命令)
  5. 12.

    GDG Taichung 怎麼使用 ? (設定) • 手機開啟 Developer options ◦

    連續點擊 Build number • 啟用 USB debugging 功能
  6. 13.

    GDG Taichung 怎麼使用 ? (設定) • 手機開啟 Developer options ◦

    連續點擊 Build number • 啟用 USB debugging 功能
  7. 14.

    GDG Taichung 怎麼使用 ? (設定) • 手機開啟 Developer options ◦

    連續點擊 Build number • 啟用 USB debugging 功能 • 接線 (optional) 安裝 driver
  8. 16.

    GDG Taichung 透過網路使用 adb • adb tcpip port ◦ adb

    connect [ip[:port]] ◦ adb disconnect [ip[:port]] • adb usb
  9. 18.

    GDG Taichung 針對 apk (app) 進行安裝除錯 • adb install <options>

    my_awesome_app.apk ◦ -r: replace existing application ◦ -t: allow test packages ◦ -d: allow version code downgrade (debuggable only) ◦ --abi: armeabi-v7a/arm64-v8a/x86/x86_64 • adb uninstall <options> my.awesome.app ◦ -k: keep the data and cache directories
  10. 19.

    GDG Taichung 查看系統訊息 • adb logcat ◦ --pid=xxx -v tag

    ◦ adb shell "logcat --pid=\`ps -eo PID,ARGS=CMD | grep my.awesome.app | grep -v grep | awk '{print \$1}'\` -v tag" | tee debug.log
  11. 20.

    GDG Taichung 檔案傳輸 • 將檔案 推 入手機 ◦ adb push

    <local_file_or_dir_path> <path_or_filename_on_phone> ▪ adb push funny_video.mp4 /sdcard/Movies ▪ adb push MyPhoto/* /sdcard/Pictures/ • 把檔案從手機 拉 到電腦 ◦ adb pull <path_or_filename_on_phone> < local_path> ▪ adb pull /sdcard/DCIM/Camera MyPhotoBack ▪ adb pull /sdcard/Download
  12. 21.

    GDG Taichung 備份還原 apk 與其資料 (即將失效) • 備份 ◦ adb

    backup my.awesome.app ◦ adb backup my.awesome.app -f awesome.ab ◦ adb backup my.awesome.app -apk -obb -f awesome.ab • 還原 ◦ adb restore awesome.ab
  13. 25.

    2019 | Confidential and Proprietary GDG Taichung ADB (Android Debug

    Bridge) • 簡介與基本操作 • Android 11 的新功能 • 進階用法
  14. 34.

    GDG Taichung 無線 ADB • 配對完成後,下次開啟 wireless adb 自動連結 ◦

    電腦已經執行 adb server (adb start-server) • 可以連 IP:PORT 都不用手動輸入嗎?
  15. 35.

    GDG Taichung 無線 ADB • 配對完成後,下次開啟 wireless adb 自動連結 ◦

    電腦已經執行 adb server (adb start-server) • 可以連 IP:PORT 都不用手動輸入嗎? ◦ 利用 mDNS 服務 ▪ RFC 6762 ▪ Bonjour service
  16. 38.
  17. 39.

    GDG Taichung 增量 apk 安裝 • 2GB+ 的 apk •

    使用 v4 簽名 ◦ https://developer.android.com/studio/command-line/apksigner#v4-signing-enabled • adb install --incremental
  18. 40.
  19. 41.

    2019 | Confidential and Proprietary GDG Taichung ADB (Android Debug

    Bridge) • 簡介與基本操作 • Android 11 的新功能 • 進階用法
  20. 45.

    GDG Taichung settings • 列表 ◦ settings list [global|system|secure] •

    查詢 ◦ settings get namespace key ▪ settings get global adb_wifi_enabled • 修改 ◦ settings put namespace key value ▪ settings put global adb_wifi_enabled 1 • 重設/刪除 ◦ settings [reset|delete] namespace key
  21. 48.

    GDG Taichung device_config • 列表 ◦ device_config list • 其餘操作同

    settings • 開啟隱藏功能 ◦ device_config put systemui enable_screenshot_scrolling true
  22. 52.

    GDG Taichung svc (控制裝置) • 開啟/關閉 NFC/藍芽 ◦ svc nfc

    [enable|disable] ◦ svc bluetooth [enable|disable] • 關閉/重啟 手機 ◦ svc power shutdown ◦ svc power reboot [bootloader|recovery|shell] • 停用休眠 ◦ svc power stayon [true|false] ◦ svc power stayon [usb|ac|wireless]
  23. 53.

    GDG Taichung svc • USB 功能 ◦ svc usb setFunctions

    [mtp|ptp|adb] ◦ svc usb resetUsbGadget
  24. 54.

    GDG Taichung cmd (對 service 下達指令) • 列出所有 service ◦

    cmd -l • cmd service command … ◦ cmd uimode night [yes|no|auto] ◦ cmd display set-brightness BRIGHTNESS_LEVEL ◦ cmd connectivity airplane-mode [enable|disable]
  25. 55.

    GDG Taichung 透過 cmd 模擬裝置狀況 • 電池電量/充電行為 ◦ cmd battery

    set level 50 ◦ cmd battery set wireless 1 ◦ cmd battery set status 2 ◦ cmd battery unplug ◦ cmd battery reset
  26. 56.

    GDG Taichung 透過 cmd 模擬裝置狀況 • 儲存裝置 ◦ cmd devicestoragemonitor

    [force-low|force-not-low] ◦ cmd devicestoragemonitor reset
  27. 57.

    GDG Taichung 透過 cmd 模擬裝置狀況 • 省電模式 ◦ cmd power

    set-adaptive-power-saver-enabled [true|false] ◦ cmd power set-mode [0|1] (1: Low Power Mode) ◦ cmd power set-fixed-performance-mode-enabled [true|false]
  28. 58.

    GDG Taichung 其他有趣的 cmd 服務 • wifi • statusbar •

    media_session • netpolicy • jobscheduler • notification
  29. 59.

    GDG Taichung pm (Package Manager) • 安裝/反安裝 app (同 adb

    install / uninstall) • 隱藏/停用 ◦ pm [hide|unhide] my.awesome.app ◦ pm [disable|enable] my.awesome.app • 清除 app 資料 ◦ pm clear my.awesome.app • 清除 cache ◦ pm trim-caches 1G
  30. 60.

    GDG Taichung pm (Package Manager) • 列出所有安裝 app ◦ pm

    list packages ◦ pm list packages -3 (只列出第三方) ◦ pm list packages -f (列出 apk 所在路徑) ◦ pm list packages -d (只列出遭停用的) • 查詢 intent 接收設定 ◦ pm query-activities -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
  31. 61.

    GDG Taichung • am start-[activity|service|foreground-service] INTENT • am stop-service INTENT

    • am force-stop my.awesome.app • am broadcast INTENT am (Activity Manager)
  32. 64.

    GDG Taichung run-as • 轉換為指定 debug app 的身份 ◦ run-as

    my.awesome.app ◦ 將 app 內的檔案複製到 /sdcard/ 下再透過 adb pull 抓回 • 搭配 exec-out 直接拉回檔案 ◦ adb exec-out run-as my.awesome.app cat databases/repo.db > repo.db ◦ Device File Explorer in Android Studio
  33. 65.

    GDG Taichung 抓圖,錄影 • 抓圖 ◦ adb shell screencap -p

    FILENAME.png • 錄影 ◦ adb shell screenrecord --time-limit 20 FILENAME.mp4 ▪ --size wxh ▪ --bit-rate 6000000
  34. 66.

    GDG Taichung 寫 script 使用 adb 的小技巧 • 只針對 USB

    連接的裝置操作 ◦ adb -d commands.. • 只針對 網路 連接的裝置操作 (模擬器) ◦ adb -e commands.. • 只針對特定裝置操作 ◦ adb -s serial commands.. • 確認 adb 狀態後再進行下一步 ◦ adb wait-for[-usb|-local]-device ◦ adb wait-for-sideload
  35. 67.

    GDG Taichung • adb shell 讓手機可以如同 server 般操控 • 調整手機設定值

    ◦ settings / device_config • 改變手機狀態 ◦ svc • 控制手機服務 ◦ cmd • 開發工具 ◦ pm / am / wm / run-as • 其他 ◦ screencap / screenrecord 小結