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
400
Pai Pai First DEMO
shakalaca
2
110
Other Decks in How-to & DIY
See All in How-to & DIY
バーチャルバナナとリアルバナナ #iotlt #TouchDesigner
n0bisuke2
0
110
球体型ロボットと複合現実を活用したマルチエージェントシステム - M5stack Japan Tour 2024 Spring Osaka
tichise
0
200
「おうちクラウド」が今も熱い!
hirosat
2
1k
AWS User Community - JAWS-UG/AWS ユーザーコミュニティのご紹介
awsjcpm
1
140
コロナ後の世界メイカーフェア事情 高須正和@Nico-Tech Shenzhen #KMMF2024 #KariyaMMF2024
takasumasakazu
0
270
LT(Lightning Talk)のドキドキ感を共有する IoT ぼっとを作った話
scbc1167
1
150
「AITRIOS」でトカゲの活動量を可視化
hoshinoresearch
0
320
ライトニングトーク: JAWS-UGが凄いぞ、という小ネタ
awsjcpm
0
130
#相席食堂 ちょっと待てぃボタンダイジェスト+ソラコムボタン #iotlt
n0bisuke2
0
340
カフェでノートPCが盗難されたかどうかを検知するIoT #linedc #iotlt #obniz #protoout
n0bisuke2
1
300
電気工事士を取ったら一瞬で元が取れた件
bicstone
3
4.6k
M5Stickと超小型エッジAIカメラ「AITRIOS」
hoshinoresearch
0
330
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
5
440
Side Projects
sachag
452
42k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
28
4.4k
GraphQLとの向き合い方2022年版
quramy
44
13k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
Building Applications with DynamoDB
mza
91
6.1k
Raft: Consensus for Rubyists
vanstee
137
6.7k
Making Projects Easy
brettharned
116
5.9k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.6k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
127
18k
Mobile First: as difficult as doing things right
swwweet
222
9k
Bash Introduction
62gerente
608
210k
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