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
380
你可能不知道指令可以做的事 @ 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
510
Gradle enabled android project
shakalaca
5
410
IAB x Redeem in Android
shakalaca
0
130
老爹必備的奶瓶與鍵盤之道
shakalaca
3
410
Pai Pai First DEMO
shakalaca
2
120
Other Decks in How-to & DIY
See All in How-to & DIY
LT(Lightning Talk)のドキドキ感を共有する IoT ぼっとを作った話
scbc1167
1
170
[너구리랑! 회고 밋업 2023] CTO 1년 회고와 회고를 바탕으로 만든 프로젝트에 대한 회고 - 전문가가 되는 방법 // 한날 님
develop_neoguri
0
170
M5Stickと超小型エッジAIカメラ「AITRIOS」
hoshinoresearch
0
360
Learning from Firefighters
ksatirli
PRO
0
160
Dirbtinis intelektas dizainerio gyvenime
lekevicius
0
220
スクフェス福岡前夜祭 LT
pokotyamu
0
220
Career Opportunities In WordPress
wchk2023
0
260
enebular Update for the second half of 2023
taokiuhuru
0
180
JAWS-UGのご紹介 JAWS-UGとは?
awsjcpm
0
210
Snowflake WEST ユーザー会第2回「ハンズオンセッション」
mabokaneko0802
0
250
How to Hire a Driver for Long Distance Travel?
greaterservice
0
150
音に負けない!子どもが騒いでいる脇でも快適オンラインMTGの秘伝
kaitou
0
340
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
42
7.2k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2.1k
Music & Morning Musume
bryan
46
6.3k
Visualization
eitanlees
146
15k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.5k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
VelocityConf: Rendering Performance Case Studies
addyosmani
328
24k
Designing for Performance
lara
604
68k
Site-Speed That Sticks
csswizardry
4
380
Being A Developer After 40
akosma
89
590k
RailsConf 2023
tenderlove
29
1k
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