Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
你可能不知道指令可以做的事 @ Android 11 Meetups
Search
Shaka Huang
June 18, 2020
How-to & DIY
0
370
你可能不知道指令可以做的事 @ Android 11 Meetups
ADB (Android Debug Bridge)
======================
* 簡介與基本操作
* Android 11 的新功能
* 進階用法
Shaka Huang
June 18, 2020
Tweet
Share
More Decks by Shaka Huang
See All by Shaka Huang
刷機實驗室
shakalaca
0
280
Android Studio Walkthrough
shakalaca
19
2.1k
Android Development with Gradle
shakalaca
2
170
Head First Android Apps Dev Tools
shakalaca
6
500
Gradle enabled android project
shakalaca
5
400
IAB x Redeem in Android
shakalaca
0
120
老爹必備的奶瓶與鍵盤之道
shakalaca
3
410
Pai Pai First DEMO
shakalaca
2
110
Other Decks in How-to & DIY
See All in How-to & DIY
バタフライ効果/butterfly_effect
florets1
0
260
[너구리랑! 회고 밋업 2023] CTO 1년 회고와 회고를 바탕으로 만든 프로젝트에 대한 회고 - 전문가가 되는 방법 // 한날 님
develop_neoguri
0
160
3ヶ月でできる! 探査機自作ゼミ教材自作入門
sksat
6
1.3k
ラズパイカメラ向け ケーブル延長基板・ハウジングの開発
koheimasaki
PRO
1
140
苦いビールを避ける冴えたやり方
watany
2
170
HCIのデモに役立つ映像活用アイデア集 #WISS2024 ナイトセッション #HCIVideoCulture
bonsaistudiojp
2
490
さらなるアウトプットに、Let's ライトニングトーク! ― LTのやり方
ma2shita
2
730
How to get hundreds of organic backlinks through statistics link building
ronishehu
1
200
LT(Lightning Talk)のドキドキ感を共有する IoT ぼっとキーホルダ!
scbc1167
0
290
miiboとamiibo繋げてみた。 #miibo #amiibo #iotlt
n0bisuke2
1
300
グローバルAWSユーザー コミュニティとJAWS-UG - JAWS FESTA 2024 in Hiroshima
awsjcpm
0
4.2k
LT(Lightning Talk)のドキドキ感を共有しながら 応援してくれるBotを作ってみた!
scbc1167
0
330
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
51
7.3k
Designing for Performance
lara
604
68k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Automating Front-end Workflow
addyosmani
1366
200k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
365
25k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
2
160
What's in a price? How to price your products and services
michaelherold
244
12k
Building a Scalable Design System with Sketch
lauravandoore
460
33k
Fireside Chat
paigeccino
34
3.1k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2k
Transcript
GDG Taichung 你可能不知道指令可 以做到的事 shakalaca
GDG Taichung 用鍵盤搞手機
GDG Taichung 使用 adb 控制手機
2019 | Confidential and Proprietary GDG Taichung ADB (Android Debug
Bridge) • 簡介與基本操作 • Android 11 的新功能 • 進階用法
2019 | Confidential and Proprietary GDG Taichung ADB (Android Debug
Bridge) • 簡介與基本操作 • Android 11 的新功能 • 進階用法
GDG Taichung 簡介
GDG Taichung 這是什麼? • Android Debug Bridge • 針對 apk
(app) 進行安裝除錯 • 手機與電腦間的檔案傳輸 • 改變手機狀態
GDG Taichung 這是什麼? • Android Debug Bridge • 針對 apk
(app) 進行安裝除錯 • 手機與電腦間的檔案傳輸 • 改變手機狀態 • 架構 ◦ Client (adb 指令本人) ◦ Server (電腦端負責 client 與 daemon 的溝通) ◦ Daemon (手機上接收命令)
GDG Taichung 如何取得 ?
GDG Taichung 如何取得 ? https://developer.android.com/studio/releases/platform-tools
GDG Taichung 怎麼使用 ? (設定) • 手機開啟 Developer options ◦
連續點擊 Build number
GDG Taichung 怎麼使用 ? (設定) • 手機開啟 Developer options ◦
連續點擊 Build number • 啟用 USB debugging 功能
GDG Taichung 怎麼使用 ? (設定) • 手機開啟 Developer options ◦
連續點擊 Build number • 啟用 USB debugging 功能
GDG Taichung 怎麼使用 ? (設定) • 手機開啟 Developer options ◦
連續點擊 Build number • 啟用 USB debugging 功能 • 接線 (optional) 安裝 driver
GDG Taichung 怎麼使用 ? • adb devices • adb shell
◦ exit 退出 ◦ Ctrl-D
GDG Taichung 透過網路使用 adb • adb tcpip port ◦ adb
connect [ip[:port]] ◦ adb disconnect [ip[:port]] • adb usb
GDG Taichung 基本操作
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
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
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
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
GDG Taichung 重開機或者刷入升級包 • adb reboot [bootloader|recovery|sideload] ◦ adb reboot
sideload-auto-reboot ◦ adb sideload FOTA_package.zip
GDG Taichung 異常狀態排除 • adb disconnect • 拔線 • adb
kill-server ◦ adb start-server
GDG Taichung • ADB 是攻城獅的好朋友 ◦ 可以透過 USB 線或者網路連接手機 ◦
安裝軟體 ◦ 除錯 ◦ 傳輸檔案 ◦ 刷機 小結
2019 | Confidential and Proprietary GDG Taichung ADB (Android Debug
Bridge) • 簡介與基本操作 • Android 11 的新功能 • 進階用法
GDG Taichung 真。無線連結
GDG Taichung
GDG Taichung
GDG Taichung
GDG Taichung
GDG Taichung adb pair IP:PORT [CODE]
GDG Taichung
GDG Taichung 無線 ADB • 配對完成後,下次開啟 wireless adb 自動連結 ◦
電腦已經執行 adb server (adb start-server)
GDG Taichung 無線 ADB • 配對完成後,下次開啟 wireless adb 自動連結 ◦
電腦已經執行 adb server (adb start-server) • 可以連 IP:PORT 都不用手動輸入嗎?
GDG Taichung 無線 ADB • 配對完成後,下次開啟 wireless adb 自動連結 ◦
電腦已經執行 adb server (adb start-server) • 可以連 IP:PORT 都不用手動輸入嗎? ◦ 利用 mDNS 服務 ▪ RFC 6762 ▪ Bonjour service
GDG Taichung 使用 mDNS • mdns check
GDG Taichung 使用 mDNS • mdns check • mdns services
GDG Taichung 使用 mDNS • mdns check • mdns services
• 手機開啟配對 ◦ pair
GDG Taichung 增量 apk 安裝 • 2GB+ 的 apk •
使用 v4 簽名 ◦ https://developer.android.com/studio/command-line/apksigner#v4-signing-enabled • adb install --incremental
GDG Taichung • ADB 在 Android 11 小進化 ◦ 效能提升
◦ 無線 adb ◦ 增量安裝 小結
2019 | Confidential and Proprietary GDG Taichung ADB (Android Debug
Bridge) • 簡介與基本操作 • Android 11 的新功能 • 進階用法
GDG Taichung ADB shell • 新世界的大門 ◦ unix commands ◦
busybox
GDG Taichung settings (設定裝置) • 列表 ◦ settings list [global|system|secure]
GDG Taichung settings • 列表 ◦ settings list global
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
GDG Taichung device_config (設定裝置) • 列表 ◦ device_config list
GDG Taichung device_config • 列表 ◦ device_config list
GDG Taichung device_config • 列表 ◦ device_config list • 其餘操作同
settings • 開啟隱藏功能 ◦ device_config put systemui enable_screenshot_scrolling true
GDG Taichung
GDG Taichung
GDG Taichung
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]
GDG Taichung svc • USB 功能 ◦ svc usb setFunctions
[mtp|ptp|adb] ◦ svc usb resetUsbGadget
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]
GDG Taichung 透過 cmd 模擬裝置狀況 • 電池電量/充電行為 ◦ cmd battery
set level 50 ◦ cmd battery set wireless 1 ◦ cmd battery set status 2 ◦ cmd battery unplug ◦ cmd battery reset
GDG Taichung 透過 cmd 模擬裝置狀況 • 儲存裝置 ◦ cmd devicestoragemonitor
[force-low|force-not-low] ◦ cmd devicestoragemonitor reset
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]
GDG Taichung 其他有趣的 cmd 服務 • wifi • statusbar •
media_session • netpolicy • jobscheduler • notification
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
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
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)
GDG Taichung am (Activity Manager)
GDG Taichung wm (Window Manager) • size [reset|WxH] • density
[reset|DENSITY]
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
GDG Taichung 抓圖,錄影 • 抓圖 ◦ adb shell screencap -p
FILENAME.png • 錄影 ◦ adb shell screenrecord --time-limit 20 FILENAME.mp4 ▪ --size wxh ▪ --bit-rate 6000000
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
GDG Taichung • adb shell 讓手機可以如同 server 般操控 • 調整手機設定值
◦ settings / device_config • 改變手機狀態 ◦ svc • 控制手機服務 ◦ cmd • 開發工具 ◦ pm / am / wm / run-as • 其他 ◦ screencap / screenrecord 小結
GDG Taichung Feedbacks are welcome ! :) Thank you @shakalaca
/shakalaca @shakalaca