awesome-adb
awesome-adb copied to clipboard
ADB Usage Complete / ADB 用法大全
ADBï¼å³ Android Debug Bridgeï¼å®æ¯ Android å¼å/æµè¯äººåä¸å¯æ¿ä»£çå¼ºå¤§å·¥å ·ï¼ä¹æ¯ Android 设å¤ç©å®¶ç好ç©å ·ã
æç»æ´æ°ä¸ï¼æ¬¢è¿æ PR å Issue è¡¥å ææ£ï¼è§å¾æç¨çå¯ä»¥å° æ¤ GitHub ä»åº Star æ¶èå¤ç¨ã
ç»æ¬é¡¹ç®æ建议åæè§ï¼ææ³ä¸æ交æµï¼å¯å ³æ³¨å¾®ä¿¡å ¬ä¼å·ãé·éªçç¨åºåãï¼

æ³¨ï¼ æä¸æé¨åå½ä»¤çæ¯ææ åµå¯è½ä¸ Android ç³»ç»çæ¬åå®å¶ ROM çå®ç°æå ³ã
Other languages: :gb: English
- åºæ¬ç¨æ³
- 设å¤è¿æ¥ç®¡ç
- åºç¨ç®¡ç
- ä¸åºç¨äº¤äº
- æ件管ç
- 模ææé®/è¾å ¥
- æ¥çæ¥å¿
- æ¥ç设å¤ä¿¡æ¯
- ä¿®æ¹è®¾ç½®
- å®ç¨åè½
- å·æºç¸å ³å½ä»¤
- å®å ¨ç¸å ³å½ä»¤
- æ´å¤ adb shell å½ä»¤
-
常è§é®é¢
- å¯å¨ adb server 失败
- com.android.ddmlib.AdbCommandRejectedException
- adb çéå®æ¹å®ç°
- ç¸å ³å½ä»¤
- è´è°¢
- åèé¾æ¥
åºæ¬ç¨æ³
å½ä»¤è¯æ³
adb å½ä»¤çåºæ¬è¯æ³å¦ä¸ï¼
adb [-d|-e|-s <serialNumber>] <command>
å¦æåªæä¸ä¸ªè®¾å¤/模æå¨è¿æ¥æ¶ï¼å¯ä»¥çç¥æ [-d|-e|-s <serialNumber>]
è¿ä¸é¨åï¼ç´æ¥ä½¿ç¨ adb <command>
ã
为å½ä»¤æå®ç®æ 设å¤
å¦ææå¤ä¸ªè®¾å¤/模æå¨è¿æ¥ï¼åéè¦ä¸ºå½ä»¤æå®ç®æ 设å¤ã
åæ° | å«ä¹ |
---|---|
-d | æå®å½åå¯ä¸éè¿ USB è¿æ¥ç Android 设å¤ä¸ºå½ä»¤ç®æ |
-e | æå®å½åå¯ä¸è¿è¡ç模æå¨ä¸ºå½ä»¤ç®æ |
-s <serialNumber> |
æå®ç¸åº serialNumber å·ç设å¤/模æå¨ä¸ºå½ä»¤ç®æ |
å¨å¤ä¸ªè®¾å¤/模æå¨è¿æ¥çæ
åµä¸è¾å¸¸ç¨çæ¯ -s <serialNumber>
åæ°ï¼serialNumber å¯ä»¥éè¿ adb devices
å½ä»¤è·åãå¦ï¼
$ adb devices
List of devices attached
cf264b8f device
emulator-5554 device
10.129.164.6:5555 device
è¾åºéç cf264b8f
ãemulator-5554
å 10.129.164.6:5555
å³ä¸º serialNumberã
æ¯å¦è¿æ¶æ³æå® cf264b8f
è¿ä¸ªè®¾å¤æ¥è¿è¡ adb å½ä»¤è·åå±å¹å辨çï¼
adb -s cf264b8f shell wm size
åå¦æ³ç» 10.129.164.6:5555
è¿ä¸ªè®¾å¤å®è£
åºç¨ï¼è¿ç§å½¢å¼ç serialNumber æ ¼å¼ä¸º <IP>:<Port>
ï¼ä¸è¬ä¸ºæ 线è¿æ¥ç设å¤æ Genymotion ç第ä¸æ¹ Android 模æå¨ï¼ï¼
adb -s 10.129.164.6:5555 install test.apk
éå°å¤è®¾å¤/模æå¨çæ åµå使ç¨è¿å 个åæ°ä¸ºå½ä»¤æå®ç®æ 设å¤ï¼ä¸æä¸ä¸ºç®åæè¿°ï¼ä¸åéå¤ã
å¯å¨/åæ¢
å¯å¨ adb server å½ä»¤ï¼
adb start-server
ï¼ä¸è¬æ éæå¨æ§è¡æ¤å½ä»¤ï¼å¨è¿è¡ adb å½ä»¤æ¶è¥åç° adb server 没æå¯å¨ä¼èªå¨è°èµ·ãï¼
åæ¢ adb server å½ä»¤ï¼
adb kill-server
æ¥ç adb çæ¬
å½ä»¤ï¼
adb version
示ä¾è¾åºï¼
Android Debug Bridge version 1.0.36
Revision 8f855a3d9b35-android
以 root æéè¿è¡ adbd
adb çè¿è¡åçæ¯ PC 端ç adb server ä¸ææºç«¯çå®æ¤è¿ç¨ adbd 建ç«è¿æ¥ï¼ç¶å PC 端ç adb client éè¿ adb server 转åå½ä»¤ï¼adbd æ¥æ¶å½ä»¤å解æè¿è¡ã
æ以å¦æ adbd 以æ®éæéæ§è¡ï¼æäºéè¦ root æéæè½æ§è¡çå½ä»¤æ æ³ç´æ¥ç¨ adb xxx
æ§è¡ãè¿æ¶å¯ä»¥ adb shell
ç¶å su
åæ§è¡å½ä»¤ï¼ä¹å¯ä»¥è®© adbd 以 root æéæ§è¡ï¼è¿ä¸ªå°±è½éææ§è¡é«æéå½ä»¤äºã
å½ä»¤ï¼
adb root
æ£å¸¸è¾åºï¼
restarting adbd as root
ç°å¨åè¿è¡ adb shell
ï¼ççå½ä»¤è¡æ示符æ¯ä¸æ¯åæ #
äºï¼
æäºææº root åä¹æ æ³éè¿ adb root
å½ä»¤è®© adbd 以 root æéæ§è¡ï¼æ¯å¦ä¸æçé¨åæºåï¼ä¼æ示 adbd cannot run as root in production builds
ï¼æ¤æ¶å¯ä»¥å
å®è£
adbd Insecureï¼ç¶å adb root
è¯è¯ã
ç¸åºå°ï¼å¦æè¦æ¢å¤ adbd 为é root æéçè¯ï¼å¯ä»¥ä½¿ç¨ adb unroot
å½ä»¤ã
æå® adb server çç½ç»ç«¯å£
å½ä»¤ï¼
adb -P <port> start-server
é»è®¤ç«¯å£ä¸º 5037ã
设å¤è¿æ¥ç®¡ç
æ¥è¯¢å·²è¿æ¥è®¾å¤/模æå¨
å½ä»¤ï¼
adb devices
è¾åºç¤ºä¾ï¼
List of devices attached
cf264b8f device
emulator-5554 device
10.129.164.6:5555 device
è¾åºæ ¼å¼ä¸º [serialNumber] [state]
ï¼serialNumber å³æ们常说ç SNï¼state æå¦ä¸å ç§ï¼
-
offline
ââ 表示设å¤æªè¿æ¥æåææ ååºã -
device
ââ 设å¤å·²è¿æ¥ã注æè¿ä¸ªç¶æ并ä¸è½æ è¯ Android ç³»ç»å·²ç»å®å ¨å¯å¨åå¯æä½ï¼å¨è®¾å¤å¯å¨è¿ç¨ä¸è®¾å¤å®ä¾å°±å¯è¿æ¥å° adbï¼ä½å¯å¨å®æ¯åç³»ç»æå¤äºå¯æä½ç¶æã -
no device
ââ 没æ设å¤/模æå¨è¿æ¥ã
以ä¸è¾åºæ¾ç¤ºå½åå·²ç»è¿æ¥äºä¸å°è®¾å¤/模æå¨ï¼cf264b8f
ãemulator-5554
å 10.129.164.6:5555
åå«æ¯å®ä»¬ç SNãä» emulator-5554
è¿ä¸ªååå¯ä»¥çåºå®æ¯ä¸ä¸ª Android 模æå¨ï¼è 10.129.164.6:5555
è¿ç§å½¢ä¸º <IP>:<Port>
ç serialNumber ä¸è¬æ¯æ 线è¿æ¥ç设å¤æ Genymotion ç第ä¸æ¹ Android 模æå¨ã
常è§å¼å¸¸è¾åºï¼
-
没æ设å¤/模æå¨è¿æ¥æåã
List of devices attached
-
设å¤/模æå¨æªè¿æ¥å° adb ææ ååºã
List of devices attached cf264b8f offline
USB è¿æ¥
éè¿ USB è¿æ¥æ¥æ£å¸¸ä½¿ç¨ adb éè¦ä¿è¯å ç¹ï¼
-
硬件ç¶ææ£å¸¸ã
å æ¬ Android 设å¤å¤äºæ£å¸¸å¼æºç¶æï¼USB è¿æ¥çº¿ååç§æ¥å£å®å¥½ã
-
Android 设å¤çå¼åè é项å USB è°è¯æ¨¡å¼å·²å¼å¯ã
å¯ä»¥å°ã设置ã-ãå¼åè é项ã-ãAndroid è°è¯ãæ¥çã
å¦æå¨è®¾ç½®éæ¾ä¸å°å¼åè é项ï¼é£éè¦éè¿ä¸ä¸ªå½©èæ¥è®©å®æ¾ç¤ºåºæ¥ï¼å¨ã设置ã-ãå ³äºææºãè¿ç»ç¹å»ãçæ¬å·ã7 次ã
-
设å¤é©±å¨ç¶ææ£å¸¸ã
è¿ä¸ç¹è²ä¼¼å¨ Linux å Mac OS X ä¸ä¸ç¨æå¿ï¼å¨ Windows ä¸æå¯è½éå°éè¦å®è£ 驱å¨çæ åµï¼ç¡®è®¤è¿ä¸ç¹å¯ä»¥å³é®ã计ç®æºã-ãå±æ§ãï¼å°ã设å¤ç®¡çå¨ãéæ¥çç¸å ³è®¾å¤ä¸æ¯å¦æé»è²æå¹å·æé®å·ï¼å¦æ没æ就说æ驱å¨ç¶æå·²ç»å¥½äºãå¦åå¯ä»¥ä¸è½½ä¸ä¸ªææºå©æç±»ç¨åºæ¥å®è£ 驱å¨å ã
-
éè¿ USB 线è¿æ¥å¥½çµèå设å¤å确认ç¶æã
adb devices
å¦æè½çå°
xxxxxx device
说æè¿æ¥æåã
æ 线è¿æ¥ï¼Android11 å以ä¸ï¼
Android 11 åæ´é«çæ¬æ¯æä½¿ç¨ Android è°è¯æ¡¥ (adb) ä»å·¥ä½ç«ä»¥æ 线æ¹å¼é¨ç½²åè°è¯åºç¨ãä¾å¦ï¼æ¨å¯ä»¥å°å¯è°è¯åºç¨é¨ç½²å°å¤å°è¿ç¨è®¾å¤ï¼èæ ééè¿ USB å®é è¿æ¥è®¾å¤ãè¿æ ·å°±å¯ä»¥é¿å 常è§ç USB è¿æ¥é®é¢ï¼ä¾å¦é©±å¨ç¨åºå®è£ æ¹é¢çé®é¢ã
æä½æ¥éª¤ï¼
-
æ´æ°å°ææ°çæ¬ç SDK å¹³å°å·¥å ·(è³å°30.0.0)ã
-
å° Android 设å¤ä¸è¦è¿è¡ adb ççµèè¿æ¥å°åä¸ä¸ªå±åç½ï¼æ¯å¦è¿å°åä¸ä¸ª WiFiã
-
å¨å¼åè é项ä¸å¯ç¨æ 线è°è¯ã
-
å¨è¯¢é®è¦å 许å¨æ¤ç½ç»ä¸è¿è¡æ 线è°è¯åï¼ç对è¯æ¡ä¸ï¼ç¹å»å 许ã
-
éæ©ä½¿ç¨é 对ç é 对设å¤ï¼ä½¿ç¨å¼¹çªä¸ç IP å°åå端å£å·ã
adb pair ipaddr:port
-
æ示
Enter pairing code:
æ¶è¾å ¥å¼¹çªä¸çé 对ç ï¼æååä¼æ¾ç¤ºSuccessfully paired to ...
ã -
使ç¨æ 线è°è¯ä¸ç IP å°åå端å£ã
adb connect ipaddr:port
-
确认è¿æ¥ç¶æã
adb devices
å¦æè½çå°
ipaddr:port device
说æè¿æ¥æåã
æ 线è¿æ¥ï¼éè¦åå© USB 线ï¼
é¤äºå¯ä»¥éè¿ USB è¿æ¥è®¾å¤ä¸çµèæ¥ä½¿ç¨ adbï¼ä¹å¯ä»¥éè¿æ 线è¿æ¥ââè½ç¶è¿æ¥è¿ç¨ä¸ä¹æéè¦ä½¿ç¨ USB çæ¥éª¤ï¼ä½æ¯è¿æ¥æåä¹åä½ ç设å¤å°±å¯ä»¥å¨ä¸å®èå´å æè± USB è¿æ¥çº¿çéå¶å¦ï¼
æä½æ¥éª¤ï¼
-
å° Android 设å¤ä¸è¦è¿è¡ adb ççµèè¿æ¥å°åä¸ä¸ªå±åç½ï¼æ¯å¦è¿å°åä¸ä¸ª WiFiã
-
å°è®¾å¤ä¸çµèéè¿ USB 线è¿æ¥ã
åºç¡®ä¿è¿æ¥æåï¼å¯è¿è¡
adb devices
çæ¯å¦è½ååºè¯¥è®¾å¤ï¼ã -
让设å¤å¨ 5555 端å£çå¬ TCP/IP è¿æ¥ï¼
adb tcpip 5555
-
æå¼ USB è¿æ¥ã
-
æ¾å°è®¾å¤ç IP å°åã
ä¸è¬è½å¨ã设置ã-ãå ³äºææºã-ãç¶æä¿¡æ¯ã-ãIPå°åãæ¾å°ï¼ä¹å¯ä»¥ä½¿ç¨ä¸æé æ¥ç设å¤ä¿¡æ¯ - IP å°å ä¸èéçæ¹æ³ç¨ adb å½ä»¤æ¥æ¥çã
-
éè¿ IP å°åè¿æ¥è®¾å¤ã
adb connect <device-ip-address>
è¿éç
<device-ip-address>
å°±æ¯ä¸ä¸æ¥ä¸æ¾å°çè®¾å¤ IP å°åã -
确认è¿æ¥ç¶æã
adb devices
å¦æè½çå°
<device-ip-address>:5555 device
说æè¿æ¥æåã
å¦æè¿æ¥ä¸äºï¼è¯·ç¡®è®¤ Android 设å¤ä¸çµèæ¯è¿æ¥å°äºåä¸ä¸ª WiFiï¼ç¶åå次æ§è¡ adb connect <device-ip-address>
é£ä¸æ¥ï¼
å¦æè¿æ¯ä¸è¡çè¯ï¼éè¿ adb kill-server
éæ°å¯å¨ adb ç¶åä»å¤´åæ¥ä¸æ¬¡è¯è¯ã
æå¼æ 线è¿æ¥
å½ä»¤ï¼
adb disconnect <device-ip-address>
æ 线è¿æ¥ï¼æ éåå© USB 线ï¼
注ï¼éè¦ root æéã
ä¸ä¸èãæ 线è¿æ¥ï¼éè¦åå© USB 线ï¼ãæ¯å®æ¹ææ¡£éä»ç»çæ¹æ³ï¼éè¦åå©äº USB æ°æ®çº¿æ¥å®ç°æ 线è¿æ¥ã
æ¢ç¶æ们æ³è¦å®ç°æ 线è¿æ¥ï¼é£è½ä¸è½æææ¥éª¤ä¸æ¥é½æ¯æ 线çå¢ï¼çæ¡æ¯è½çã
-
å¨ Android 设å¤ä¸å®è£ ä¸ä¸ªç»ç«¯æ¨¡æå¨ã
å·²ç»å®è£ è¿ç设å¤å¯ä»¥è·³è¿æ¤æ¥ãæ使ç¨çç»ç«¯æ¨¡æå¨ä¸è½½å°åæ¯ï¼Terminal Emulator for Android Downloads
-
å° Android 设å¤ä¸è¦è¿è¡ adb ççµèè¿æ¥å°åä¸ä¸ªå±åç½ï¼æ¯å¦è¿å°åä¸ä¸ª WiFiã
-
æå¼ Android 设å¤ä¸çç»ç«¯æ¨¡æå¨ï¼å¨éé¢ä¾æ¬¡è¿è¡å½ä»¤ï¼
su setprop service.adb.tcp.port 5555
-
æ¾å° Android 设å¤ç IP å°åã
ä¸è¬è½å¨ã设置ã-ãå ³äºææºã-ãç¶æä¿¡æ¯ã-ãIPå°åãæ¾å°ï¼ä¹å¯ä»¥ä½¿ç¨ä¸æé æ¥ç设å¤ä¿¡æ¯ - IP å°å ä¸èéçæ¹æ³ç¨ adb å½ä»¤æ¥æ¥çã
-
å¨çµèä¸éè¿ adb å IP å°åè¿æ¥ Android 设å¤ã
adb connect <device-ip-address>
è¿éç
<device-ip-address>
å°±æ¯ä¸ä¸æ¥ä¸æ¾å°çè®¾å¤ IP å°åãå¦æè½çå°
connected to <device-ip-address>:5555
è¿æ ·çè¾åºå表示è¿æ¥æåã
è注ä¸ï¼
æç设å¤ï¼æ¯å¦å°ç±³ 5S + MIUI 8.0 + Android 6.0.1 MXB48Tï¼å¯è½å¨ç¬¬ 5 æ¥ä¹åéè¦éå¯ adbd æå¡ï¼å¨è®¾å¤çç»ç«¯æ¨¡æå¨ä¸è¿è¡ï¼
restart adbd
å¦æ restart æ æï¼å°è¯ä»¥ä¸å½ä»¤ï¼
stop adbd
start adbd
åºç¨ç®¡ç
æ¥çåºç¨å表
æ¥çåºç¨å表çåºæ¬å½ä»¤æ ¼å¼æ¯
adb shell pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u] [--user USER_ID] [FILTER]
å³å¨ adb shell pm list packages
çåºç¡ä¸å¯ä»¥å ä¸äºåæ°è¿è¡è¿æ»¤æ¥çä¸åçå表ï¼æ¯æçè¿æ»¤åæ°å¦ä¸ï¼
åæ° | æ¾ç¤ºå表 |
---|---|
æ | ææåºç¨ |
-f | æ¾ç¤ºåºç¨å ³èç apk æ件 |
-d | åªæ¾ç¤º disabled çåºç¨ |
-e | åªæ¾ç¤º enabled çåºç¨ |
-s | åªæ¾ç¤ºç³»ç»åºç¨ |
-3 | åªæ¾ç¤ºç¬¬ä¸æ¹åºç¨ |
-i | æ¾ç¤ºåºç¨ç installer |
-u | å å«å·²å¸è½½åºç¨ |
<FILTER> |
å
åå
å« <FILTER> å符串 |
ææåºç¨
å½ä»¤ï¼
adb shell pm list packages
è¾åºç¤ºä¾ï¼
package:com.android.smoketest
package:com.example.android.livecubes
package:com.android.providers.telephony
package:com.google.android.googlequicksearchbox
package:com.android.providers.calendar
package:com.android.providers.media
package:com.android.protips
package:com.android.documentsui
package:com.android.gallery
package:com.android.externalstorage
...
// other packages here
...
ç³»ç»åºç¨
å½ä»¤ï¼
adb shell pm list packages -s
第ä¸æ¹åºç¨
å½ä»¤ï¼
adb shell pm list packages -3
å åå å«æå符串çåºç¨
æ¯å¦è¦æ¥çå
åå
å«å符串 mazhuang
çåºç¨å表ï¼å½ä»¤ï¼
adb shell pm list packages mazhuang
å½ç¶ä¹å¯ä»¥ä½¿ç¨ grep æ¥è¿æ»¤ï¼
adb shell pm list packages | grep mazhuang
å®è£ APK
å½ä»¤æ ¼å¼ï¼
adb install [-lrtsdg] <path_to_apk>
åæ°ï¼
adb install
åé¢å¯ä»¥è·ä¸äºå¯éåæ°æ¥æ§å¶å®è£
APK çè¡ä¸ºï¼å¯ç¨åæ°åå«ä¹å¦ä¸ï¼
åæ° | å«ä¹ |
---|---|
-l | å°åºç¨å®è£ å°ä¿æ¤ç®å½ /mnt/asec |
-r | å 许è¦çå®è£ |
-t | å
许å®è£
AndroidManifest.xml é application æå® android:testOnly="true" çåºç¨ |
-s | å°åºç¨å®è£ å° sdcard |
-d | å 许é级è¦çå®è£ |
-g | æäºææè¿è¡æ¶æé |
--abi abi-identifier | 为ç¹å® ABI 强å¶å®è£ apkï¼abi-identifier å¯ä»¥æ¯ armeabi-v7aãarm64-v8aãv86ãx86_64 ç |
è¿è¡å½ä»¤åå¦æè§å°ç±»ä¼¼å¦ä¸è¾åºï¼ç¶æ为 Success
ï¼ä»£è¡¨å®è£
æåï¼
[100%] /data/local/tmp/1.apk
pkg: /data/local/tmp/1.apk
Success
ä¸é¢æ¯å½åææ°ç v1.0.36 ç adb çè¾åºï¼ä¼æ¾ç¤º push apk æ件å°ææºçè¿åº¦ç¾åæ¯ã
使ç¨æ§çæ¬ adb çè¾åºåæ¯è¿æ ·çï¼
12040 KB/s (22205609 bytes in 1.801s)
pkg: /data/local/tmp/SogouInput_android_v8.3_sweb.apk
Success
èå¦æç¶æ为 Failure
å表示å®è£
失败ï¼æ¯å¦ï¼
[100%] /data/local/tmp/map-20160831.apk
pkg: /data/local/tmp/map-20160831.apk
Failure [INSTALL_FAILED_ALREADY_EXISTS]
常è§å®è£ 失败è¾åºä»£ç ãå«ä¹åå¯è½ç解å³åæ³å¦ä¸ï¼
è¾åº | å«ä¹ | 解å³åæ³ |
---|---|---|
INSTALL_FAILED_ALREADY_EXISTS | åºç¨å·²ç»åå¨ï¼æå¸è½½äºä½æ²¡å¸è½½å¹²å | adb install æ¶ä½¿ç¨ -r åæ°ï¼æè
å
adb uninstall <packagename> åå®è£
|
INSTALL_FAILED_INVALID_APK | æ æç APK æ件 | |
INSTALL_FAILED_INVALID_URI | æ æç APK æ件å | ç¡®ä¿ APK æ件åéæ ä¸æ |
INSTALL_FAILED_INSUFFICIENT_STORAGE | 空é´ä¸è¶³ | æ¸ çç©ºé´ |
INSTALL_FAILED_DUPLICATE_PACKAGE | å·²ç»åå¨ååç¨åº | |
INSTALL_FAILED_NO_SHARED_USER | 请æ±çå ±äº«ç¨æ·ä¸åå¨ | |
INSTALL_FAILED_UPDATE_INCOMPATIBLE | 以åå®è£ è¿åååºç¨ï¼ä½å¸è½½æ¶æ°æ®æ²¡æ移é¤ï¼æè å·²å®è£ 该åºç¨ï¼ä½ç¾åä¸ä¸è´ | å
adb uninstall <packagename> åå®è£
|
INSTALL_FAILED_SHARED_USER_INCOMPATIBLE | 请æ±çå ±äº«ç¨æ·åå¨ä½ç¾åä¸ä¸è´ | |
INSTALL_FAILED_MISSING_SHARED_LIBRARY | å®è£ å 使ç¨äºè®¾å¤ä¸ä¸å¯ç¨çå ±äº«åº | |
INSTALL_FAILED_REPLACE_COULDNT_DELETE | æ¿æ¢æ¶æ æ³å é¤ | |
INSTALL_FAILED_DEXOPT | dex ä¼åéªè¯å¤±è´¥æ空é´ä¸è¶³ | |
INSTALL_FAILED_OLDER_SDK | 设å¤ç³»ç»çæ¬ä½äºåºç¨è¦æ± | |
INSTALL_FAILED_CONFLICTING_PROVIDER | 设å¤éå·²ç»åå¨ä¸åºç¨éååç content provider | |
INSTALL_FAILED_NEWER_SDK | 设å¤ç³»ç»çæ¬é«äºåºç¨è¦æ± | |
INSTALL_FAILED_TEST_ONLY | åºç¨æ¯ test-only çï¼ä½å®è£
æ¶æ²¡ææå® -t åæ° |
|
INSTALL_FAILED_CPU_ABI_INCOMPATIBLE | å å«ä¸å ¼å®¹è®¾å¤ CPU åºç¨ç¨åºäºè¿å¶æ¥å£ç native code | |
INSTALL_FAILED_MISSING_FEATURE | åºç¨ä½¿ç¨äºè®¾å¤ä¸å¯ç¨çåè½ | |
INSTALL_FAILED_CONTAINER_ERROR | 1. sdcard 访é®å¤±è´¥; 2. åºç¨ç¾åä¸ ROM ç¾åä¸è´ï¼è¢«å½ä½å ç½®åºç¨ã |
1. 确认 sdcard å¯ç¨ï¼æè
å®è£
å°å
ç½®åå¨; 2. æå æ¶ä¸ä¸ ROM 使ç¨ç¸åç¾åã |
INSTALL_FAILED_INVALID_INSTALL_LOCATION | 1. ä¸è½å®è£
å°æå®ä½ç½®; 2. åºç¨ç¾åä¸ ROM ç¾åä¸è´ï¼è¢«å½ä½å ç½®åºç¨ã |
1. åæ¢å®è£
ä½ç½®ï¼æ·»å æå é¤ -s åæ°;2. æå æ¶ä¸ä¸ ROM 使ç¨ç¸åç¾åã |
INSTALL_FAILED_MEDIA_UNAVAILABLE | å®è£ ä½ç½®ä¸å¯ç¨ | ä¸è¬ä¸º sdcardï¼ç¡®è®¤ sdcard å¯ç¨æå®è£ å°å ç½®åå¨ |
INSTALL_FAILED_VERIFICATION_TIMEOUT | éªè¯å®è£ å è¶ æ¶ | |
INSTALL_FAILED_VERIFICATION_FAILURE | éªè¯å®è£ å 失败 | |
INSTALL_FAILED_PACKAGE_CHANGED | åºç¨ä¸è°ç¨ç¨åºææçä¸ä¸è´ | |
INSTALL_FAILED_UID_CHANGED | 以åå®è£ è¿è¯¥åºç¨ï¼ä¸æ¬æ¬¡åé ç UID ä¸ä¸è´ | æ¸ é¤ä»¥åå®è£ è¿çæ®çæ件 |
INSTALL_FAILED_VERSION_DOWNGRADE | å·²ç»å®è£ äºè¯¥åºç¨æ´é«çæ¬ | ä½¿ç¨ -d åæ° |
INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE | å·²å®è£ target SDK æ¯æè¿è¡æ¶æéçåååºç¨ï¼è¦å®è£ ççæ¬ä¸æ¯æè¿è¡æ¶æé | |
INSTALL_PARSE_FAILED_NOT_APK | æå®è·¯å¾ä¸æ¯æ件ï¼æä¸æ¯ä»¥ .apk ç»å°¾ |
|
INSTALL_PARSE_FAILED_BAD_MANIFEST | æ æ³è§£æç AndroidManifest.xml æ件 | |
INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION | 解æå¨éå°å¼å¸¸ | |
INSTALL_PARSE_FAILED_NO_CERTIFICATES | å®è£ å 没æç¾å | |
INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES | å·²å®è£ 该åºç¨ï¼ä¸ç¾åä¸ APK æ件ä¸ä¸è´ | å å¸è½½è®¾å¤ä¸ç该åºç¨ï¼åå®è£ |
INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING | 解æ APK æ件æ¶éå° CertificateEncodingException |
|
INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME | manifest æ件é没ææè 使ç¨äºæ æçå å | |
INSTALL_PARSE_FAILED_BAD_SHARED_USER_ID | manifest æ件éæå®äºæ æçå ±äº«ç¨æ· ID | |
INSTALL_PARSE_FAILED_MANIFEST_MALFORMED | 解æ manifest æ件æ¶éå°ç»ææ§é误 | |
INSTALL_PARSE_FAILED_MANIFEST_EMPTY | å¨ manifest æ件éæ¾ä¸å°æ¾å¯æä½æ ç¾ï¼instrumentation æ applicationï¼ | |
INSTALL_FAILED_INTERNAL_ERROR | å ç³»ç»é®é¢å®è£ 失败 | |
INSTALL_FAILED_USER_RESTRICTED | ç¨æ·è¢«éå¶å®è£ åºç¨ | å¨å¼åè é项éå°ãUSBå®è£ ãæå¼ï¼å¦æå·²ç»æå¼äºï¼é£å å ³éåæå¼ã |
INSTALL_FAILED_DUPLICATE_PERMISSION | åºç¨å°è¯å®ä¹ä¸ä¸ªå·²ç»åå¨çæéå称 | |
INSTALL_FAILED_NO_MATCHING_ABIS | åºç¨å å«è®¾å¤çåºç¨ç¨åºäºè¿å¶æ¥å£ä¸æ¯æç native code | |
INSTALL_CANCELED_BY_USER | åºç¨å®è£ éè¦å¨è®¾å¤ä¸ç¡®è®¤ï¼ä½æªæä½è®¾å¤æç¹äºåæ¶ | å¨è®¾å¤ä¸åæå®è£ |
INSTALL_FAILED_ACWF_INCOMPATIBLE | åºç¨ç¨åºä¸è®¾å¤ä¸å ¼å®¹ | |
INSTALL_FAILED_TEST_ONLY | APK æ件æ¯ä½¿ç¨ Android Studio ç´æ¥ RUN ç¼è¯åºæ¥çæ件 | éè¿ Gradle ç assembleDebug æ assembleRelease éæ°ç¼è¯ï¼æè Generate Signed APK |
does not contain AndroidManifest.xml | æ æç APK æ件 | |
is not a valid zip file | æ æç APK æ件 | |
Offline | 设å¤æªè¿æ¥æå | å å°è®¾å¤ä¸ adb è¿æ¥æå |
unauthorized | 设å¤æªææå 许è°è¯ | |
error: device not found | 没æè¿æ¥æåçè®¾å¤ | å å°è®¾å¤ä¸ adb è¿æ¥æå |
protocol failure | 设å¤å·²æå¼è¿æ¥ | å å°è®¾å¤ä¸ adb è¿æ¥æå |
Unknown option: -s | Android 2.2 以ä¸ä¸æ¯æå®è£ å° sdcard | ä¸ä½¿ç¨ -s åæ° |
No space left on device | 空é´ä¸è¶³ | æ¸ çç©ºé´ |
Permission denied ... sdcard ... | sdcard ä¸å¯ç¨ | |
signatures do not match the previously installed version; ignoring! | å·²å®è£ 该åºç¨ä¸ç¾åä¸ä¸è´ | å å¸è½½è®¾å¤ä¸ç该åºç¨ï¼åå®è£ |
åèï¼PackageManager.java
adb install
å
é¨åçç®ä»
adb install
å®é
æ¯åä¸æ¥å®æï¼
-
push apk æä»¶å° /data/local/tmpã
-
è°ç¨ pm install å®è£ ã
-
å é¤ /data/local/tmp ä¸çå¯¹åº apk æ件ã
æ以ï¼å¿ è¦çæ¶åä¹å¯ä»¥æ ¹æ®è¿ä¸ªæ¥éª¤ï¼æå¨åæ¥æ§è¡å®è£ è¿ç¨ã
å¸è½½åºç¨
å½ä»¤ï¼
adb uninstall [-k] <packagename>
<packagename>
表示åºç¨çå
åï¼-k
åæ°å¯éï¼è¡¨ç¤ºå¸è½½åºç¨ä½ä¿çæ°æ®åç¼åç®å½ã
å½ä»¤ç¤ºä¾ï¼
adb uninstall com.qihoo360.mobilesafe
表示å¸è½½ 360 ææºå«å£«ã
æ¸ é¤åºç¨æ°æ®ä¸ç¼å
å½ä»¤ï¼
adb shell pm clear <packagename>
<packagename>
表示åºç¨åå
ï¼è¿æ¡å½ä»¤çææç¸å½äºå¨è®¾ç½®éçåºç¨ä¿¡æ¯çé¢ç¹å»äºãæ¸
é¤ç¼åãåãæ¸
é¤æ°æ®ãã
å½ä»¤ç¤ºä¾ï¼
adb shell pm clear com.qihoo360.mobilesafe
è¡¨ç¤ºæ¸ é¤ 360 ææºå«å£«çæ°æ®åç¼åã
æ¥çåå° Activity
å½ä»¤ï¼
adb shell dumpsys activity activities | grep mResumedActivity
è¾åºç¤ºä¾ï¼
mResumedActivity: ActivityRecord{8079d7e u0 com.cyanogenmod.trebuchet/com.android.launcher3.Launcher t42}
å
¶ä¸ç com.cyanogenmod.trebuchet/com.android.launcher3.Launcher
å°±æ¯å½åå¤äºåå°ç Activityã
å¨ Windows ä¸ä»¥ä¸å½ä»¤å¯è½ä¸å¯ç¨ï¼å¯ä»¥å°è¯ adb shell dumpsys activity activities | findstr mResumedActivity
æ adb shell "dumpsys activity activities | grep mResumedActivity"
ã
æ¥çæ£å¨è¿è¡ç Services
å½ä»¤ï¼
adb shell dumpsys activity services [<packagename>]
<packagename>
åæ°ä¸æ¯å¿
é¡»çï¼æå® <packagename>
表示æ¥çä¸æ个å
åç¸å
³ç Servicesï¼ä¸æå®è¡¨ç¤ºæ¥çææ Servicesã
<packagename>
ä¸ä¸å®è¦ç»åºå®æ´çå
åï¼æ¯å¦è¿è¡ adb shell dumpsys activity services org.mazhuang
ï¼é£ä¹å
å org.mazhuang.demo1
ãorg.mazhuang.demo2
å org.mazhuang123
çç¸å
³ç Services é½ä¼ååºæ¥ã
æ¥çåºç¨è¯¦ç»ä¿¡æ¯
å½ä»¤ï¼
adb shell dumpsys package <packagename>
è¾åºä¸å å«å¾å¤ä¿¡æ¯ï¼å æ¬ Activity Resolver TableãRegistered ContentProvidersãå åãuserIdãå®è£ åçæ件èµæºä»£ç çè·¯å¾ãçæ¬ä¿¡æ¯ãæéä¿¡æ¯åæäºç¶æãç¾åçæ¬ä¿¡æ¯çã
<packagename>
表示åºç¨å
åã
è¾åºç¤ºä¾ï¼
Activity Resolver Table:
Non-Data Actions:
android.intent.action.MAIN:
5b4cba8 org.mazhuang.guanggoo/.SplashActivity filter 5ec9dcc
Action: "android.intent.action.MAIN"
Category: "android.intent.category.LAUNCHER"
AutoVerify=false
Registered ContentProviders:
org.mazhuang.guanggoo/com.tencent.bugly.beta.utils.BuglyFileProvider:
Provider{7a3c394 org.mazhuang.guanggoo/com.tencent.bugly.beta.utils.BuglyFileProvider}
ContentProvider Authorities:
[org.mazhuang.guanggoo.fileProvider]:
Provider{7a3c394 org.mazhuang.guanggoo/com.tencent.bugly.beta.utils.BuglyFileProvider}
applicationInfo=ApplicationInfo{7754242 org.mazhuang.guanggoo}
Key Set Manager:
[org.mazhuang.guanggoo]
Signing KeySets: 501
Packages:
Package [org.mazhuang.guanggoo] (c1d7f):
userId=10394
pkg=Package{55f714c org.mazhuang.guanggoo}
codePath=/data/app/org.mazhuang.guanggoo-2
resourcePath=/data/app/org.mazhuang.guanggoo-2
legacyNativeLibraryDir=/data/app/org.mazhuang.guanggoo-2/lib
primaryCpuAbi=null
secondaryCpuAbi=null
versionCode=74 minSdk=15 targetSdk=25
versionName=1.1.74
splits=[base]
apkSigningVersion=2
applicationInfo=ApplicationInfo{7754242 org.mazhuang.guanggoo}
flags=[ HAS_CODE ALLOW_CLEAR_USER_DATA ALLOW_BACKUP ]
privateFlags=[ RESIZEABLE_ACTIVITIES ]
dataDir=/data/user/0/org.mazhuang.guanggoo
supportsScreens=[small, medium, large, xlarge, resizeable, anyDensity]
timeStamp=2017-10-22 23:50:53
firstInstallTime=2017-10-22 23:50:25
lastUpdateTime=2017-10-22 23:50:55
installerPackageName=com.miui.packageinstaller
signatures=PackageSignatures{af09595 [53c7caa2]}
installPermissionsFixed=true installStatus=1
pkgFlags=[ HAS_CODE ALLOW_CLEAR_USER_DATA ALLOW_BACKUP ]
requested permissions:
android.permission.READ_PHONE_STATE
android.permission.INTERNET
android.permission.ACCESS_NETWORK_STATE
android.permission.ACCESS_WIFI_STATE
android.permission.READ_LOGS
android.permission.WRITE_EXTERNAL_STORAGE
android.permission.READ_EXTERNAL_STORAGE
install permissions:
android.permission.INTERNET: granted=true
android.permission.ACCESS_NETWORK_STATE: granted=true
android.permission.ACCESS_WIFI_STATE: granted=true
User 0: ceDataInode=1155675 installed=true hidden=false suspended=false stopped=true notLaunched=false enabled=0
gids=[3003]
runtime permissions:
android.permission.READ_EXTERNAL_STORAGE: granted=true
android.permission.READ_PHONE_STATE: granted=true
android.permission.WRITE_EXTERNAL_STORAGE: granted=true
User 999: ceDataInode=0 installed=false hidden=false suspended=false stopped=true notLaunched=true enabled=0
gids=[3003]
runtime permissions:
Dexopt state:
[org.mazhuang.guanggoo]
Instruction Set: arm64
path: /data/app/org.mazhuang.guanggoo-2/base.apk
status: /data/app/org.mazhuang.guanggoo-2/oat/arm64/base.odex [compilation_filter=speed-profile, status=kOatUpToDa
te]
æ¥çåºç¨å®è£ è·¯å¾
å½ä»¤:
adb shell pm path <PACKAGE>
è¾åºåºç¨å®è£ è·¯å¾
è¾åºç¤ºä¾:
adb shell pm path ecarx.weather
package:/data/app/ecarx.weather-1.apk
ä¸åºç¨äº¤äº
主è¦æ¯ä½¿ç¨ am <command>
å½ä»¤ï¼å¸¸ç¨ç <command>
å¦ä¸ï¼
command | ç¨é |
---|---|
start [options] <INTENT> |
å¯å¨ <INTENT> æå®ç Activity |
startservice [options] <INTENT> |
å¯å¨ <INTENT> æå®ç Service |
broadcast [options] <INTENT> |
åé <INTENT> æå®ç广æ |
force-stop <packagename> |
åæ¢ <packagename> ç¸å
³çè¿ç¨ |
<INTENT>
åæ°å¾çµæ´»ï¼åå Android ç¨åºæ¶ä»£ç éç Intent ç¸å¯¹åºã
ç¨äºå³å® intent 对象çé项å¦ä¸ï¼
åæ° | å«ä¹ |
---|---|
-a <ACTION> |
æå® actionï¼æ¯å¦ android.intent.action.VIEW |
-c <CATEGORY> |
æå® categoryï¼æ¯å¦ android.intent.category.APP_CONTACTS |
-n <COMPONENT> |
æå®å®æ´ component åï¼ç¨äºæç¡®æå®å¯å¨åªä¸ª Activityï¼å¦ com.example.app/.ExampleActivity |
<INTENT>
éè¿è½å¸¦æ°æ®ï¼å°±åå代ç æ¶ç Bundle ä¸æ ·ï¼
åæ° | å«ä¹ |
---|---|
--esn <EXTRA_KEY> |
null å¼ï¼åªæ key åï¼ |
`-e | --es <EXTRA_KEY> <EXTRA_STRING_VALUE>` |
--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> |
boolean å¼ |
--ei <EXTRA_KEY> <EXTRA_INT_VALUE> |
integer å¼ |
--el <EXTRA_KEY> <EXTRA_LONG_VALUE> |
long å¼ |
--ef <EXTRA_KEY> <EXTRA_FLOAT_VALUE> |
float å¼ |
--eu <EXTRA_KEY> <EXTRA_URI_VALUE> |
URI |
--ecn <EXTRA_KEY> <EXTRA_COMPONENT_NAME_VALUE> |
component name |
--eia <EXTRA_KEY> <EXTRA_INT_VALUE>[,<EXTRA_INT_VALUE...] |
integer æ°ç» |
--ela <EXTRA_KEY> <EXTRA_LONG_VALUE>[,<EXTRA_LONG_VALUE...] |
long æ°ç» |
å¯å¨åºç¨/ è°èµ· Activity
æå®Activityå称å¯å¨
å½ä»¤æ ¼å¼ï¼
adb shell am start [options] <INTENT>
ä¾å¦ï¼
adb shell am start -n com.tencent.mm/.ui.LauncherUI
表示è°èµ·å¾®ä¿¡ä¸»çé¢ã
adb shell am start -n org.mazhuang.boottimemeasure/.MainActivity --es "toast" "hello, world"
表示è°èµ· org.mazhuang.boottimemeasure/.MainActivity
å¹¶ä¼ ç»å® string æ°æ®é®å¼å¯¹ toast - hello, world
ã
ä¸æå®Activityå称å¯å¨ï¼å¯å¨ä¸»Activityï¼
å½ä»¤æ ¼å¼ï¼
adb shell monkey -p <packagename> -c android.intent.category.LAUNCHER 1
ä¾å¦ï¼
adb shell monkey -p com.tencent.mm -c android.intent.category.LAUNCHER 1
表示è°èµ·å¾®ä¿¡ä¸»çé¢ã
è°èµ· Service
å½ä»¤æ ¼å¼ï¼
adb shell am startservice [options] <INTENT>
ä¾å¦ï¼
adb shell am startservice -n com.tencent.mm/.plugin.accountsync.model.AccountAuthenticatorService
表示è°èµ·å¾®ä¿¡çæ Serviceã
å¦å¤ä¸ä¸ªå ¸åçç¨ä¾æ¯å¦æ设å¤ä¸åæ¬åºè¯¥æ¾ç¤ºèææé®ä½æ¯æ²¡ææ¾ç¤ºï¼å¯ä»¥è¯è¯è¿ä¸ªï¼
adb shell am startservice -n com.android.systemui/.SystemUIService
åæ¢ Service
å½ä»¤æ ¼å¼ï¼
adb shell am stopservice [options] <INTENT>
åé广æ
å½ä»¤æ ¼å¼ï¼
adb shell am broadcast [options] <INTENT>
å¯ä»¥åææç»ä»¶å¹¿æï¼ä¹å¯ä»¥åªåæå®ç»ä»¶å¹¿æã
ä¾å¦ï¼åææç»ä»¶å¹¿æ BOOT_COMPLETED
ï¼
adb shell am broadcast -a android.intent.action.BOOT_COMPLETED
åä¾å¦ï¼åªå org.mazhuang.boottimemeasure/.BootCompletedReceiver
广æ BOOT_COMPLETED
ï¼
adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -n org.mazhuang.boottimemeasure/.BootCompletedReceiver
è¿ç±»ç¨æ³å¨æµè¯çæ¶åå¾å®ç¨ï¼æ¯å¦æ个广æçåºæ¯å¾é¾å¶é ï¼å¯ä»¥èèéè¿è¿ç§æ¹å¼æ¥åé广æã
æ¢è½åéç³»ç»é¢å®ä¹ç广æï¼ä¹è½åéèªå®ä¹å¹¿æãå¦ä¸æ¯é¨åç³»ç»é¢å®ä¹å¹¿æåæ£å¸¸è§¦åæ¶æºï¼
action | 触åæ¶æº |
---|---|
android.net.conn.CONNECTIVITY_CHANGE | ç½ç»è¿æ¥åçåå |
android.intent.action.SCREEN_ON | å±å¹ç¹äº® |
android.intent.action.SCREEN_OFF | å±å¹çç |
android.intent.action.BATTERY_LOW | çµéä½ï¼ä¼å¼¹åºçµéä½æç¤ºæ¡ |
android.intent.action.BATTERY_OKAY | çµéæ¢å¤äº |
android.intent.action.BOOT_COMPLETED | 设å¤å¯å¨å®æ¯ |
android.intent.action.DEVICE_STORAGE_LOW | åå¨ç©ºé´è¿ä½ |
android.intent.action.DEVICE_STORAGE_OK | åå¨ç©ºé´æ¢å¤ |
android.intent.action.PACKAGE_ADDED | å®è£ äºæ°çåºç¨ |
android.net.wifi.STATE_CHANGE | WiFi è¿æ¥ç¶æåçåå |
android.net.wifi.WIFI_STATE_CHANGED | WiFi ç¶æå为å¯ç¨/å ³é/æ£å¨å¯å¨/æ£å¨å ³é/æªç¥ |
android.intent.action.BATTERY_CHANGED | çµæ± çµéåçåå |
android.intent.action.INPUT_METHOD_CHANGED | ç³»ç»è¾å ¥æ³åçåå |
android.intent.action.ACTION_POWER_CONNECTED | å¤é¨çµæºè¿æ¥ |
android.intent.action.ACTION_POWER_DISCONNECTED | å¤é¨çµæºæå¼è¿æ¥ |
android.intent.action.DREAMING_STARTED | ç³»ç»å¼å§ä¼ç |
android.intent.action.DREAMING_STOPPED | ç³»ç»åæ¢ä¼ç |
android.intent.action.WALLPAPER_CHANGED | å£çº¸åçåå |
android.intent.action.HEADSET_PLUG | æå ¥è³æº |
android.intent.action.MEDIA_UNMOUNTED | å¸è½½å¤é¨ä»è´¨ |
android.intent.action.MEDIA_MOUNTED | æè½½å¤é¨ä»è´¨ |
android.os.action.POWER_SAVE_MODE_CHANGED | ççµæ¨¡å¼å¼å¯ |
ï¼ä»¥ä¸å¹¿æåå¯ä½¿ç¨ adb 触åï¼
强å¶åæ¢åºç¨
å½ä»¤ï¼
adb shell am force-stop <packagename>
å½ä»¤ç¤ºä¾ï¼
adb shell am force-stop com.qihoo360.mobilesafe
表示åæ¢ 360 å®å ¨å«å£«çä¸åè¿ç¨ä¸æå¡ã
æ¶ç´§å å
å½ä»¤ï¼
adb shell am send-trim-memory <pid> <level>
pid: è¿ç¨ ID level: HIDDENãRUNNING_MODERATEãBACKGROUNDã RUNNING_LOWãMODERATEãRUNNING_CRITICALãCOMPLETE
å½ä»¤ç¤ºä¾ï¼
adb shell am send-trim-memory 12345 RUNNING_LOW
表示å pid=12345 çè¿ç¨ï¼ååº level=RUNNING_LOW çæ¶ç´§å åå½ä»¤ã
æ件管ç
å¤å¶è®¾å¤éçæ件å°çµè
å½ä»¤ï¼
adb pull <设å¤éçæ件路å¾> [çµèä¸çç®å½]
å
¶ä¸ çµèä¸çç®å½
åæ°å¯ä»¥çç¥ï¼é»è®¤å¤å¶å°å½åç®å½ã
ä¾ï¼
adb pull /sdcard/sr.mp4 ~/tmp/
*å°æå·§ï¼*设å¤ä¸çæ件路å¾å¯è½éè¦ root æéæè½è®¿é®ï¼å¦æä½ ç设å¤å·²ç» root è¿ï¼å¯ä»¥å
ä½¿ç¨ adb shell
å su
å½ä»¤å¨ adb shell éè·å root æéåï¼å
cp /path/on/device /sdcard/filename
å°æ件å¤å¶å° sdcardï¼ç¶å adb pull /sdcard/filename /path/on/pc
ã
å¤å¶çµèéçæ件å°è®¾å¤
å½ä»¤ï¼
adb push <çµèä¸çæ件路å¾> <设å¤éçç®å½>
ä¾ï¼
adb push ~/sr.mp4 /sdcard/
*å°æå·§ï¼*设å¤ä¸çæ件路å¾æ®éæéå¯è½æ æ³ç´æ¥åå
¥ï¼å¦æä½ ç设å¤å·²ç» root è¿ï¼å¯ä»¥å
adb push /path/on/pc /sdcard/filename
ï¼ç¶å adb shell
å su
å¨ adb shell éè·å root æéåï¼cp /sdcard/filename /path/on/device
ã
模ææé®/è¾å ¥
å¨ adb shell
éæ个å¾å®ç¨çå½ä»¤å« input
ï¼éè¿å®å¯ä»¥åä¸äºæ趣çäºæ
ã
input
å½ä»¤çå®æ´ help ä¿¡æ¯å¦ä¸ï¼
Usage: input [<source>] <command> [<arg>...]
The sources are:
mouse
keyboard
joystick
touchnavigation
touchpad
trackball
stylus
dpad
gesture
touchscreen
gamepad
The commands and default sources are:
text <string> (Default: touchscreen)
keyevent [--longpress] <key code number or name> ... (Default: keyboard)
tap <x> <y> (Default: touchscreen)
swipe <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen)
press (Default: trackball)
roll <dx> <dy> (Default: trackball)
æ¯å¦ä½¿ç¨ adb shell input keyevent <keycode>
å½ä»¤ï¼ä¸åç keycode è½å®ç°ä¸åçåè½ï¼å®æ´ç keycode åè¡¨è¯¦è§ KeyEventï¼æå¼é¨åæè§å¾æææçå¦ä¸ï¼
keycode | å«ä¹ |
---|---|
3 | HOME é® |
4 | è¿åé® |
5 | æå¼æ¨å·åºç¨ |
6 | ææçµè¯ |
24 | å¢å é³é |
25 | éä½é³é |
26 | çµæºé® |
27 | æç §ï¼éè¦å¨ç¸æºåºç¨éï¼ |
64 | æå¼æµè§å¨ |
82 | èåé® |
85 | ææ¾/æå |
86 | åæ¢ææ¾ |
87 | ææ¾ä¸ä¸é¦ |
88 | ææ¾ä¸ä¸é¦ |
122 | 移å¨å æ å°è¡é¦æåè¡¨é¡¶é¨ |
123 | 移å¨å æ å°è¡æ«æå表åºé¨ |
126 | æ¢å¤ææ¾ |
127 | æåææ¾ |
164 | éé³ |
176 | æå¼ç³»ç»è®¾ç½® |
187 | åæ¢åºç¨ |
207 | æå¼è系人 |
208 | æå¼æ¥å |
209 | æå¼é³ä¹ |
210 | æå¼è®¡ç®å¨ |
220 | éä½å±å¹äº®åº¦ |
221 | æé«å±å¹äº®åº¦ |
223 | ç³»ç»ä¼ç |
224 | ç¹äº®å±å¹ |
231 | æå¼è¯é³å©æ |
276 | å¦æ没æ wakelock å让系ç»ä¼ç |
ä¸é¢æ¯ input
å½ä»¤çä¸äºç¨æ³ä¸¾ä¾ã
çµæºé®
å½ä»¤ï¼
adb shell input keyevent 26
æ§è¡ææç¸å½äºæçµæºé®ã
èåé®
å½ä»¤ï¼
adb shell input keyevent 82
HOME é®
å½ä»¤ï¼
adb shell input keyevent 3
è¿åé®
å½ä»¤ï¼
adb shell input keyevent 4
é³éæ§å¶
å¢å é³éï¼
adb shell input keyevent 24
éä½é³éï¼
adb shell input keyevent 25
éé³ï¼
adb shell input keyevent 164
åªä½æ§å¶
ææ¾/æåï¼
adb shell input keyevent 85
åæ¢ææ¾ï¼
adb shell input keyevent 86
ææ¾ä¸ä¸é¦ï¼
adb shell input keyevent 87
ææ¾ä¸ä¸é¦ï¼
adb shell input keyevent 88
æ¢å¤ææ¾ï¼
adb shell input keyevent 126
æåææ¾ï¼
adb shell input keyevent 127
ç¹äº®/ççå±å¹
å¯ä»¥éè¿ä¸æ讲述è¿ç模æçµæºé®æ¥åæ¢ç¹äº®åççå±å¹ï¼ä½å¦ææç¡®å°æ³è¦ç¹äº®æè ççå±å¹ï¼é£å¯ä»¥ä½¿ç¨å¦ä¸æ¹æ³ã
ç¹äº®å±å¹ï¼
adb shell input keyevent 224
ççå±å¹ï¼
adb shell input keyevent 223
æ»å¨è§£é
å¦æéå±æ²¡æå¯ç ï¼æ¯éè¿æ»å¨æå¿è§£éï¼é£ä¹å¯ä»¥éè¿ input swipe
æ¥è§£éã
å½ä»¤ï¼åæ°ä»¥æºå Nexus 5ï¼åä¸æ»å¨æå¿è§£é举ä¾ï¼ï¼
adb shell input swipe 300 1000 300 500
åæ° 300 1000 300 500
åå«è¡¨ç¤ºèµ·å§ç¹xåæ èµ·å§ç¹yåæ ç»æç¹xåæ ç»æç¹yåæ
ã
è¾å ¥ææ¬
å¨ç¦ç¹å¤äºæææ¬æ¡æ¶ï¼å¯ä»¥éè¿ input
å½ä»¤æ¥è¾å
¥ææ¬ã
å½ä»¤ï¼
adb shell input text hello
ç°å¨ hello
åºç°å¨ææ¬æ¡äºã
æ¥çæ¥å¿
Android ç³»ç»çæ¥å¿å为两é¨åï¼åºå±ç Linux å æ ¸æ¥å¿è¾åºå° /proc/kmsgï¼Android çæ¥å¿è¾åºå° /dev/logã
Android æ¥å¿
å½ä»¤æ ¼å¼ï¼
[adb] logcat [<option>] ... [<filter-spec>] ...
常ç¨ç¨æ³å举å¦ä¸ï¼
æ级å«è¿æ»¤æ¥å¿
Android çæ¥å¿å为å¦ä¸å 个ä¼å 级ï¼priorityï¼ï¼
- V ââ Verboseï¼æä½ï¼è¾åºå¾æå¤ï¼
- D ââ Debug
- I ââ Info
- W ââ Warning
- E ââ Error
- F ââ Fatal
- S ââ Silentï¼æé«ï¼å¥ä¹ä¸è¾åºï¼
ææ级å«è¿æ»¤æ¥å¿åä¼å°è¯¥çº§å«å以ä¸çæ¥å¿è¾åºã
æ¯å¦ï¼å½ä»¤ï¼
adb logcat *:W
ä¼å° WarningãErrorãFatal å Silent æ¥å¿è¾åºã
ï¼æ³¨ï¼ å¨ macOS ä¸éè¦ç» *:W
è¿æ ·ä»¥ *
ä½ä¸º tag çåæ°å åå¼å·ï¼å¦ adb logcat "*:W"
ï¼ä¸ç¶ä¼æ¥é no matches found: *:W
ãï¼
æ tag å级å«è¿æ»¤æ¥å¿
<filter-spec>
å¯ä»¥ç±å¤ä¸ª <tag>[:priority]
ç»æã
æ¯å¦ï¼å½ä»¤ï¼
adb logcat ActivityManager:I MyApp:D *:S
表示è¾åº tag ActivityManager
ç Info 以ä¸çº§å«æ¥å¿ï¼è¾åº tag MyApp
ç Debug 以ä¸çº§å«æ¥å¿ï¼åå
¶å® tag ç Silent 级å«æ¥å¿ï¼å³å±è½å
¶å® tag æ¥å¿ï¼ã
æ¥å¿æ ¼å¼
å¯ä»¥ç¨ adb logcat -v <format>
é项æå®æ¥å¿è¾åºæ ¼å¼ã
æ¥å¿æ¯ææ以ä¸å ç§ <format>
ï¼
-
brief
é»è®¤æ ¼å¼ãæ ¼å¼ä¸ºï¼
<priority>/<tag>(<pid>): <message>
示ä¾ï¼
D/HeadsetStateMachine( 1785): Disconnected process message: 10, size: 0
-
process
æ ¼å¼ä¸ºï¼
<priority>(<pid>) <message>
示ä¾ï¼
D( 1785) Disconnected process message: 10, size: 0 (HeadsetStateMachine)
-
tag
æ ¼å¼ä¸ºï¼
<priority>/<tag>: <message>
示ä¾ï¼
D/HeadsetStateMachine: Disconnected process message: 10, size: 0
-
raw
æ ¼å¼ä¸ºï¼
<message>
示ä¾ï¼
Disconnected process message: 10, size: 0
-
time
æ ¼å¼ä¸ºï¼
<datetime> <priority>/<tag>(<pid>): <message>
示ä¾ï¼
08-28 22:39:39.974 D/HeadsetStateMachine( 1785): Disconnected process message: 10, size: 0
-
threadtime
æ ¼å¼ä¸ºï¼
<datetime> <pid> <tid> <priority> <tag>: <message>
示ä¾ï¼
08-28 22:39:39.974 1785 1832 D HeadsetStateMachine: Disconnected process message: 10, size: 0
-
long
æ ¼å¼ä¸ºï¼
[ <datetime> <pid>:<tid> <priority>/<tag> ] <message>
示ä¾ï¼
[ 08-28 22:39:39.974 1785: 1832 D/HeadsetStateMachine ] Disconnected process message: 10, size: 0
æå®æ ¼å¼å¯ä¸ä¸é¢çè¿æ»¤åæ¶ä½¿ç¨ãæ¯å¦ï¼
adb logcat -v long ActivityManager:I *:S
æ¸ ç©ºæ¥å¿
adb logcat -c
å æ ¸æ¥å¿
å½ä»¤ï¼
adb shell dmesg
è¾åºç¤ºä¾ï¼
<6>[14201.684016] PM: noirq resume of devices complete after 0.982 msecs
<6>[14201.685525] PM: early resume of devices complete after 0.838 msecs
<6>[14201.753642] PM: resume of devices complete after 68.106 msecs
<4>[14201.755954] Restarting tasks ... done.
<6>[14201.771229] PM: suspend exit 2016-08-28 13:31:32.679217193 UTC
<6>[14201.872373] PM: suspend entry 2016-08-28 13:31:32.780363596 UTC
<6>[14201.872498] PM: Syncing filesystems ... done.
ä¸æ¬å·éç [14201.684016]
代表å
æ ¸å¼å§å¯å¨åçæ¶é´ï¼åä½ä¸ºç§ã
éè¿å
æ ¸æ¥å¿æ们å¯ä»¥åä¸äºäºæ
ï¼æ¯å¦è¡¡éå
æ ¸å¯å¨æ¶é´ï¼å¨ç³»ç»å¯å¨å®æ¯åçå
æ ¸æ¥å¿éæ¾å° Freeing init memory
é£ä¸è¡åé¢çæ¶é´å°±æ¯ã
æ¥ç设å¤ä¿¡æ¯
åå·
å½ä»¤ï¼
adb shell getprop ro.product.model
è¾åºç¤ºä¾ï¼
Nexus 5
çµæ± ç¶åµ
å½ä»¤ï¼
adb shell dumpsys battery
è¾å ¥ç¤ºä¾ï¼
Current Battery Service state:
AC powered: false
USB powered: true
Wireless powered: false
status: 2
health: 2
present: true
level: 44
scale: 100
voltage: 3872
temperature: 280
technology: Li-poly
å
¶ä¸ scale
代表æ大çµéï¼level
代表å½åçµéãä¸é¢çè¾åºè¡¨ç¤ºè¿å©ä¸ 44% ççµéã
å±å¹å辨ç
å½ä»¤ï¼
adb shell wm size
è¾åºç¤ºä¾ï¼
Physical size: 1080x1920
该设å¤å±å¹å辨ç为 1080px * 1920pxã
å¦æ使ç¨å½ä»¤ä¿®æ¹è¿ï¼é£è¾åºå¯è½æ¯ï¼
Physical size: 1080x1920
Override size: 480x1024
表æ设å¤çå±å¹å辨çåæ¬æ¯ 1080px * 1920pxï¼å½å被修æ¹ä¸º 480px * 1024pxã
å±å¹å¯åº¦
å½ä»¤ï¼
adb shell wm density
è¾åºç¤ºä¾ï¼
Physical density: 420
该设å¤å±å¹å¯åº¦ä¸º 420dpiã
å¦æ使ç¨å½ä»¤ä¿®æ¹è¿ï¼é£è¾åºå¯è½æ¯ï¼
Physical density: 480
Override density: 160
表æ设å¤çå±å¹å¯åº¦åæ¥æ¯ 480dpiï¼å½å被修æ¹ä¸º 160dpiã
æ¾ç¤ºå±åæ°
å½ä»¤ï¼
adb shell dumpsys window displays
è¾åºç¤ºä¾ï¼
WINDOW MANAGER DISPLAY CONTENTS (dumpsys window displays)
Display: mDisplayId=0
init=1080x1920 420dpi cur=1080x1920 app=1080x1794 rng=1080x1017-1810x1731
deferred=false layoutNeeded=false
å
¶ä¸ mDisplayId
为 æ¾ç¤ºå±ç¼å·ï¼init
æ¯åå§å辨çåå±å¹å¯åº¦ï¼app
çé«åº¦æ¯ init
éçè¦å°ï¼è¡¨ç¤ºå±å¹åºé¨æèææé®ï¼é«åº¦ä¸º 1920 - 1794 = 126px å 42dpã
android_id
å½ä»¤ï¼
adb shell settings get secure android_id
è¾åºç¤ºä¾ï¼
51b6be48bac8c569
IMEI
å¨ Android 4.4 å以ä¸çæ¬å¯éè¿å¦ä¸å½ä»¤è·å IMEIï¼
adb shell dumpsys iphonesubinfo
è¾åºç¤ºä¾ï¼
Phone Subscriber Info:
Phone Type = GSM
Device ID = 860955027785041
å
¶ä¸ç Device ID
å°±æ¯ IMEIã
èå¨ Android 5.0 å以ä¸çæ¬éè¿ä¸ªå½ä»¤è¾åºä¸ºç©ºï¼å¾éè¿å ¶å®æ¹å¼è·åäºï¼éè¦ root æéï¼ï¼
adb shell
su
service call iphonesubinfo 1
è¾åºç¤ºä¾ï¼
Result: Parcel(
0x00000000: 00000000 0000000f 00360038 00390030 '........8.6.0.9.'
0x00000010: 00350035 00320030 00370037 00350038 '5.5.0.2.7.7.8.5.'
0x00000020: 00340030 00000031 '0.4.1... ')
æéé¢çææå
容æååºæ¥å°±æ¯ IMEI äºï¼æ¯å¦è¿éçæ¯ 860955027785041
ã
åèï¼adb shell dumpsys iphonesubinfo not working since Android 5.0 Lollipop
Android ç³»ç»çæ¬
å½ä»¤ï¼
adb shell getprop ro.build.version.release
è¾åºç¤ºä¾ï¼
5.0.2
IP å°å
æ¯æ¬¡æ³ç¥é设å¤ç IP å°åçæ¶åé½å¾ã设置ã-ãå ³äºææºã-ãç¶æä¿¡æ¯ã-ãIPå°åãå¾ç¦å¯¹ä¸å¯¹ï¼éè¿ adb å¯ä»¥æ¹ä¾¿å°æ¥çã
å½ä»¤ï¼
adb shell ifconfig | grep Mask
è¾åºç¤ºä¾ï¼
inet addr:10.130.245.230 Mask:255.255.255.252
inet addr:127.0.0.1 Mask:255.0.0.0
é£ä¹ 10.130.245.230
å°±æ¯è®¾å¤ IP å°åã
å¨æç设å¤ä¸è¿ä¸ªå½ä»¤æ²¡æè¾åºï¼å¦æ设å¤è¿ç WiFiï¼å¯ä»¥ä½¿ç¨å¦ä¸å½ä»¤æ¥æ¥çå±åç½ IPï¼
adb shell ifconfig wlan0
è¾åºç¤ºä¾ï¼
wlan0: ip 10.129.160.99 mask 255.255.240.0 flags [up broadcast running multicast]
æ
wlan0 Link encap:UNSPEC
inet addr:10.129.168.57 Bcast:10.129.175.255 Mask:255.255.240.0
inet6 addr: fe80::66cc:2eff:fe68:b6b6/64 Scope: Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:496520 errors:0 dropped:0 overruns:0 frame:0
TX packets:68215 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3000
RX bytes:116266821 TX bytes:8311736
å¦æ以ä¸å½ä»¤ä»ç¶ä¸è½å¾å°ææçä¿¡æ¯ï¼é£å¯ä»¥è¯è¯ä»¥ä¸å½ä»¤ï¼é¨åç³»ç»çæ¬éå¯ç¨ï¼ï¼
adb shell netcfg
è¾åºç¤ºä¾ï¼
wlan0 UP 10.129.160.99/20 0x00001043 f8:a9:d0:17:42:4d
lo UP 127.0.0.1/8 0x00000049 00:00:00:00:00:00
p2p0 UP 0.0.0.0/0 0x00001003 fa:a9:d0:17:42:4d
sit0 DOWN 0.0.0.0/0 0x00000080 00:00:00:00:00:00
rmnet0 DOWN 0.0.0.0/0 0x00000000 00:00:00:00:00:00
rmnet1 DOWN 0.0.0.0/0 0x00000000 00:00:00:00:00:00
rmnet3 DOWN 0.0.0.0/0 0x00000000 00:00:00:00:00:00
rmnet2 DOWN 0.0.0.0/0 0x00000000 00:00:00:00:00:00
rmnet4 DOWN 0.0.0.0/0 0x00000000 00:00:00:00:00:00
rmnet6 DOWN 0.0.0.0/0 0x00000000 00:00:00:00:00:00
rmnet5 DOWN 0.0.0.0/0 0x00000000 00:00:00:00:00:00
rmnet7 DOWN 0.0.0.0/0 0x00000000 00:00:00:00:00:00
rev_rmnet3 DOWN 0.0.0.0/0 0x00001002 4e:b7:e4:2e:17:58
rev_rmnet2 DOWN 0.0.0.0/0 0x00001002 4e:f0:c8:bf:7a:cf
rev_rmnet4 DOWN 0.0.0.0/0 0x00001002 a6:c0:3b:6b:c4:1f
rev_rmnet6 DOWN 0.0.0.0/0 0x00001002 66:bb:5d:64:2e:e9
rev_rmnet5 DOWN 0.0.0.0/0 0x00001002 0e:1b:eb:b9:23:a0
rev_rmnet7 DOWN 0.0.0.0/0 0x00001002 7a:d9:f6:81:40:5a
rev_rmnet8 DOWN 0.0.0.0/0 0x00001002 4e:e2:a9:bb:d0:1b
rev_rmnet0 DOWN 0.0.0.0/0 0x00001002 fe:65:d0:ca:82:a9
rev_rmnet1 DOWN 0.0.0.0/0 0x00001002 da:d8:e8:4f:2e:fe
å¯ä»¥çå°ç½ç»è¿æ¥å称ãå¯ç¨ç¶æãIP å°åå Mac å°åçä¿¡æ¯ã
Mac å°å
å½ä»¤ï¼
adb shell cat /sys/class/net/wlan0/address
è¾åºç¤ºä¾ï¼
f8:a9:d0:17:42:4d
è¿æ¥ççæ¯å±åç½ Mac å°åï¼ç§»å¨ç½ç»æå
¶å®è¿æ¥çä¿¡æ¯å¯ä»¥éè¿åé¢çå°èãIP å°åãéæå°ç adb shell netcfg
å½ä»¤æ¥æ¥çã
CPU ä¿¡æ¯
å½ä»¤ï¼
adb shell cat /proc/cpuinfo
è¾åºç¤ºä¾ï¼
Processor : ARMv7 Processor rev 0 (v7l)
processor : 0
BogoMIPS : 38.40
processor : 1
BogoMIPS : 38.40
processor : 2
BogoMIPS : 38.40
processor : 3
BogoMIPS : 38.40
Features : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt
CPU implementer : 0x51
CPU architecture: 7
CPU variant : 0x2
CPU part : 0x06f
CPU revision : 0
Hardware : Qualcomm MSM 8974 HAMMERHEAD (Flattened Device Tree)
Revision : 000b
Serial : 0000000000000000
è¿æ¯ Nexus 5 ç CPU ä¿¡æ¯ï¼æ们ä»è¾åºéå¯ä»¥çå°ä½¿ç¨çç¡¬ä»¶æ¯ Qualcomm MSM 8974
ï¼processor çç¼å·æ¯ 0 å° 3ï¼æ以å®æ¯åæ ¸çï¼éç¨çæ¶ææ¯ ARMv7 Processor rev 0 (v71)
ã
å åä¿¡æ¯
å½ä»¤ï¼
adb shell cat /proc/meminfo
è¾åºç¤ºä¾ï¼
MemTotal: 1027424 kB
MemFree: 486564 kB
Buffers: 15224 kB
Cached: 72464 kB
SwapCached: 24152 kB
Active: 110572 kB
Inactive: 259060 kB
Active(anon): 79176 kB
Inactive(anon): 207736 kB
Active(file): 31396 kB
Inactive(file): 51324 kB
Unevictable: 3948 kB
Mlocked: 0 kB
HighTotal: 409600 kB
HighFree: 132612 kB
LowTotal: 617824 kB
LowFree: 353952 kB
SwapTotal: 262140 kB
SwapFree: 207572 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 265324 kB
Mapped: 47072 kB
Shmem: 1020 kB
Slab: 57372 kB
SReclaimable: 7692 kB
SUnreclaim: 49680 kB
KernelStack: 4512 kB
PageTables: 5912 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 775852 kB
Committed_AS: 13520632 kB
VmallocTotal: 385024 kB
VmallocUsed: 61004 kB
VmallocChunk: 209668 kB
å
¶ä¸ï¼MemTotal
å°±æ¯è®¾å¤çæ»å
åï¼MemFree
æ¯å½å空é²å
åã
æ´å¤ç¡¬ä»¶ä¸ç³»ç»å±æ§
设å¤çæ´å¤ç¡¬ä»¶ä¸ç³»ç»å±æ§å¯ä»¥éè¿å¦ä¸å½ä»¤æ¥çï¼
adb shell cat /system/build.prop
è¿ä¼è¾åºå¾å¤ä¿¡æ¯ï¼å æ¬åé¢å 个å°èæå°çãåå·ãåãAndroid ç³»ç»çæ¬ãçã
è¾åºéè¿å
æ¬ä¸äºå
¶å®æç¨çä¿¡æ¯ï¼å®ä»¬ä¹å¯éè¿ adb shell getprop <å±æ§å>
å½ä»¤åç¬æ¥çï¼å举ä¸é¨åå±æ§å¦ä¸ï¼
å±æ§å | å«ä¹ |
---|---|
ro.build.version.sdk | SDK çæ¬ |
ro.build.version.release | Android ç³»ç»çæ¬ |
ro.build.version.security_patch | Android å®å ¨è¡¥ä¸ç¨åºçº§å« |
ro.product.model | åå· |
ro.product.brand | åç |
ro.product.name | 设å¤å |
ro.product.board | å¤çå¨åå· |
ro.product.cpu.abilist | CPU æ¯æç abi å表[è注ä¸] |
persist.sys.isUsbOtgEnabled | æ¯å¦æ¯æ OTG |
dalvik.vm.heapsize | æ¯ä¸ªåºç¨ç¨åºçå åä¸é |
ro.sf.lcd_density | å±å¹å¯åº¦ |
è注ä¸ï¼
ä¸äºå°åå®å¶ç ROM å¯è½ä¿®æ¹è¿ CPU æ¯æç abi å表çå±æ§åï¼å¦æç¨ ro.product.cpu.abilist
å±æ§åæ¥æ¾ä¸å°ï¼å¯ä»¥è¿æ ·è¯è¯ï¼
adb shell cat /system/build.prop | grep ro.product.cpu.abi
示ä¾è¾åºï¼
ro.product.cpu.abi=armeabi-v7a
ro.product.cpu.abi2=armeabi
ä¿®æ¹è®¾ç½®
æ³¨ï¼ ä¿®æ¹è®¾ç½®ä¹åï¼è¿è¡æ¢å¤å½ä»¤æå¯è½æ¾ç¤ºä»ç¶ä¸å¤ªæ£å¸¸ï¼å¯ä»¥è¿è¡ adb reboot
éå¯è®¾å¤ï¼ææå¨éå¯ã
ä¿®æ¹è®¾ç½®çåç主è¦æ¯éè¿ settings å½ä»¤ä¿®æ¹ /data/data/com.android.providers.settings/databases/settings.db éåæ¾ç设置å¼ã
å辨ç
å½ä»¤ï¼
adb shell wm size 480x1024
表示å°å辨çä¿®æ¹ä¸º 480px * 1024pxã
æ¢å¤åå辨çå½ä»¤ï¼
adb shell wm size reset
å±å¹å¯åº¦
å½ä»¤ï¼
adb shell wm density 160
表示å°å±å¹å¯åº¦ä¿®æ¹ä¸º 160dpiã
æ¢å¤åå±å¹å¯åº¦å½ä»¤ï¼
adb shell wm density reset
æ¾ç¤ºåºå
å½ä»¤ï¼
adb shell wm overscan 0,0,0,200
å个æ°ååå«è¡¨ç¤ºè·ç¦»å·¦ãä¸ãå³ãä¸è¾¹ç¼ççç½åç´ ï¼ä»¥ä¸å½ä»¤è¡¨ç¤ºå°å±å¹åºé¨ 200px çç½ã
æ¢å¤åæ¾ç¤ºåºåå½ä»¤ï¼
adb shell wm overscan reset
å ³é USB è°è¯æ¨¡å¼
å½ä»¤ï¼
adb shell settings put global adb_enabled 0
æ¢å¤ï¼
ç¨å½ä»¤æ¢å¤ä¸äºäºï¼æ¯ç«å ³éäº USB è°è¯ adb å°±è¿æ¥ä¸ä¸ Android 设å¤äºã
å»è®¾å¤ä¸æå¨æ¢å¤å§ï¼ã设置ã-ãå¼åè é项ã-ãAndroid è°è¯ãã
å 许/ç¦æ¢è®¿é®é SDK API
å 许访é®é SDK APIï¼
adb shell settings put global hidden_api_policy_pre_p_apps 1
adb shell settings put global hidden_api_policy_p_apps 1
ç¦æ¢è®¿é®é SDK APIï¼
adb shell settings delete global hidden_api_policy_pre_p_apps
adb shell settings delete global hidden_api_policy_p_apps
ä¸éè¦è®¾å¤è·å¾ Root æéã
å½ä»¤æåçæ°åçå«ä¹ï¼
å¼ | å«ä¹ |
---|---|
0 | ç¦æ¢æ£æµé SDK æ¥å£çè°ç¨ã该æ åµä¸ï¼æ¥å¿è®°å½åè½è¢«ç¦ç¨ï¼å¹¶ä¸ä»¤ strict mode APIï¼å³ detectNonSdkApiUsage() æ æãä¸æ¨èã |
1 | ä» è¦åââå 许访é®ææé SDK æ¥å£ï¼ä½ä¿çæ¥å¿ä¸çè¦åä¿¡æ¯ï¼å¯ç»§ç»ä½¿ç¨ strick mode APIã |
2 | ç¦æ¢è°ç¨æ·±ç°åååé»ååä¸çæ¥å£ã |
3 | ç¦æ¢è°ç¨é»ååä¸çæ¥å£ï¼ä½å 许è°ç¨æ·±ç°ååä¸çæ¥å£ã |
ç¶ææ å导èªæ çæ¾ç¤ºéè
æ¬èæ说çç¸å ³è®¾ç½®å¯¹åº Cyanogenmod éçãæ©å±æ¡é¢ãã
å½ä»¤ï¼
adb shell settings put global policy_control <key-values>
<key-values>
å¯ç±å¦ä¸å ç§é®åå
¶å¯¹åºçå¼ç»æï¼æ ¼å¼ä¸º <key1>=<value1>:<key2>=<value2>
ã
key | å«ä¹ |
---|---|
immersive.full | åæ¶éè |
immersive.status | éèç¶ææ |
immersive.navigation | éè导èªæ |
immersive.preconfirms | ? |
è¿äºé®å¯¹åºçå¼å¯åå¦ä¸å¼ç¨éå·ç»åï¼
value | å«ä¹ |
---|---|
apps |
ææåºç¨ |
* |
ææçé¢ |
packagename |
æå®åºç¨ |
-packagename |
æé¤æå®åºç¨ |
ä¾å¦ï¼
adb shell settings put global policy_control immersive.full=*
表示设置å¨ææçé¢ä¸é½åæ¶éèç¶ææ å导èªæ ã
adb shell settings put global policy_control immersive.status=com.package1,com.package2:immersive.navigation=apps,-com.package3
表示设置å¨å
å为 com.package1
å com.package2
çåºç¨ééèç¶ææ ï¼å¨é¤äºå
å为 com.package3
çææåºç¨ééè导èªæ ã
å®ç¨åè½
å±å¹æªå¾
æªå¾ä¿åå°çµèï¼
adb exec-out screencap -p > sc.png
å¦æ adb çæ¬è¾èï¼æ æ³ä½¿ç¨ exec-out
å½ä»¤ï¼è¿æ¶å建议æ´æ° adb çæ¬ãæ æ³æ´æ°çè¯å¯ä»¥ä½¿ç¨ä»¥ä¸éº»ç¦ç¹çåæ³ï¼
å æªå¾ä¿åå°è®¾å¤éï¼
adb shell screencap -p /sdcard/sc.png
ç¶åå° png æ件导åºå°çµèï¼
adb pull /sdcard/sc.png
å¯ä»¥ä½¿ç¨ adb shell screencap -h
æ¥ç screencap
å½ä»¤ç帮å©ä¿¡æ¯ï¼ä¸é¢æ¯ä¸¤ä¸ªææä¹çåæ°åå«ä¹ï¼
åæ° | å«ä¹ |
---|---|
-p | æå®ä¿åæ件为 png æ ¼å¼ |
-d display-id | æå®æªå¾çæ¾ç¤ºå±ç¼å·ï¼æå¤æ¾ç¤ºå±çæ åµä¸ï¼ |
å®æµå¦ææå®æ件å以 .png
ç»å°¾æ¶å¯ä»¥çç¥ -p åæ°ï¼å¦åéè¦ä½¿ç¨ -p åæ°ãå¦æä¸æå®æ件åï¼æªå¾æ件çå
容å°ç´æ¥è¾åºå° stdoutã
å¦å¤ä¸ç§ä¸è¡å½ä»¤æªå¾å¹¶ä¿åå°çµèçæ¹æ³ï¼
Linux å Windows
adb shell screencap -p | sed "s/\r$//" > sc.png
Mac OS X
adb shell screencap -p | gsed "s/\r$//" > sc.png
è¿ä¸ªæ¹æ³éè¦ç¨å° gnu sed å½ä»¤ï¼å¨ Linux ä¸ç´æ¥å°±æï¼å¨ Windows ä¸ Git å®è£ ç®å½ç bin æ件夹ä¸ä¹æãå¦æç¡®å®æ¾ä¸å°è¯¥å½ä»¤ï¼å¯ä»¥ä¸è½½ sed for Windows å¹¶å° sed.exe æå¨æ件夹添å å° PATH ç¯å¢åééã
èå¨ Mac ä¸ä½¿ç¨ç³»ç»èªå¸¦ç sed å½ä»¤ä¼æ¥éï¼
sed: RE error: illegal byte sequence
éè¦å®è£ gnu-sedï¼ç¶åä½¿ç¨ gsed å½ä»¤ï¼
brew install gnu-sed
å½å¶å±å¹
å½å¶å±å¹ä»¥ mp4 æ ¼å¼ä¿åå° /sdcardï¼
adb shell screenrecord /sdcard/filename.mp4
éè¦åæ¢æ¶æ Ctrl-Cï¼é»è®¤å½å¶æ¶é´åæé¿å½å¶æ¶é´é½æ¯ 180 ç§ã
å¦æéè¦å¯¼åºå°çµèï¼
adb pull /sdcard/filename.mp4
å¯ä»¥ä½¿ç¨ adb shell screenrecord --help
æ¥ç screenrecord
å½ä»¤ç帮å©ä¿¡æ¯ï¼ä¸é¢æ¯å¸¸è§åæ°åå«ä¹ï¼
åæ° | å«ä¹ |
---|---|
--size WIDTHxHEIGHT | è§é¢ç尺寸ï¼æ¯å¦ 1280x720 ï¼é»è®¤æ¯å±å¹å辨çã |
--bit-rate RATE | è§é¢çæ¯ç¹çï¼é»è®¤æ¯ 4Mbpsã |
--time-limit TIME | å½å¶æ¶é¿ï¼åä½ç§ã |
--verbose | è¾åºæ´å¤ä¿¡æ¯ã |
éæ°æè½½ system ååºä¸ºå¯å
注ï¼éè¦ root æéã
/system ååºé»è®¤æ载为åªè¯»ï¼ä½æäºæä½æ¯å¦ç» Android ç³»ç»æ·»å å½ä»¤ãå é¤èªå¸¦åºç¨çéè¦å¯¹ /system è¿è¡åæä½ï¼æ以éè¦éæ°æè½½å®ä¸ºå¯è¯»åã
æ¥éª¤ï¼
-
è¿å ¥ shell 并åæ¢å° root ç¨æ·æéã
å½ä»¤ï¼
adb shell su
-
æ¥çå½åååºæè½½æ åµã
å½ä»¤ï¼
mount
è¾åºç¤ºä¾ï¼
rootfs / rootfs ro,relatime 0 0 tmpfs /dev tmpfs rw,seclabel,nosuid,relatime,mode=755 0 0 devpts /dev/pts devpts rw,seclabel,relatime,mode=600 0 0 proc /proc proc rw,relatime 0 0 sysfs /sys sysfs rw,seclabel,relatime 0 0 selinuxfs /sys/fs/selinux selinuxfs rw,relatime 0 0 debugfs /sys/kernel/debug debugfs rw,relatime 0 0 none /var tmpfs rw,seclabel,relatime,mode=770,gid=1000 0 0 none /acct cgroup rw,relatime,cpuacct 0 0 none /sys/fs/cgroup tmpfs rw,seclabel,relatime,mode=750,gid=1000 0 0 none /sys/fs/cgroup/memory cgroup rw,relatime,memory 0 0 tmpfs /mnt/asec tmpfs rw,seclabel,relatime,mode=755,gid=1000 0 0 tmpfs /mnt/obb tmpfs rw,seclabel,relatime,mode=755,gid=1000 0 0 none /dev/memcg cgroup rw,relatime,memory 0 0 none /dev/cpuctl cgroup rw,relatime,cpu 0 0 none /sys/fs/cgroup tmpfs rw,seclabel,relatime,mode=750,gid=1000 0 0 none /sys/fs/cgroup/memory cgroup rw,relatime,memory 0 0 none /sys/fs/cgroup/freezer cgroup rw,relatime,freezer 0 0 /dev/block/platform/msm_sdcc.1/by-name/system /system ext4 ro,seclabel,relatime,data=ordered 0 0 /dev/block/platform/msm_sdcc.1/by-name/userdata /data ext4 rw,seclabel,nosuid,nodev,relatime,noauto_da_alloc,data=ordered 0 0 /dev/block/platform/msm_sdcc.1/by-name/cache /cache ext4 rw,seclabel,nosuid,nodev,relatime,data=ordered 0 0 /dev/block/platform/msm_sdcc.1/by-name/persist /persist ext4 rw,seclabel,nosuid,nodev,relatime,data=ordered 0 0 /dev/block/platform/msm_sdcc.1/by-name/modem /firmware vfat ro,context=u:object_r:firmware_file:s0,relatime,uid=1000,gid=1000,fmask=0337,dmask=0227,codepage=cp437,iocharset=iso8859-1,shortname=lower,errors=remount-ro 0 0 /dev/fuse /mnt/shell/emulated fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0 /dev/fuse /mnt/shell/emulated/0 fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
æ¾å°å ¶ä¸æä»¬å ³æ³¨ç带 /system çé£ä¸è¡ï¼
/dev/block/platform/msm_sdcc.1/by-name/system /system ext4 ro,seclabel,relatime,data=ordered 0 0
-
éæ°æè½½ã
å½ä»¤ï¼
mount -o remount,rw -t yaffs2 /dev/block/platform/msm_sdcc.1/by-name/system /system
è¿éç
/dev/block/platform/msm_sdcc.1/by-name/system
å°±æ¯æ们ä»ä¸ä¸æ¥çè¾åºéå¾å°çæ件路å¾ã
å¦æè¾åºæ²¡ææ示é误çè¯ï¼æä½å°±æåäºï¼å¯ä»¥å¯¹ /system ä¸çæ件为æ欲为äºã
æ¥çè¿æ¥è¿ç WiFi å¯ç
注ï¼éè¦ root æéã
å½ä»¤ï¼
adb shell
su
cat /data/misc/wifi/*.conf
è¾åºç¤ºä¾ï¼
network={
ssid="TP-LINK_9DFC"
scan_ssid=1
psk="123456789"
key_mgmt=WPA-PSK
group=CCMP TKIP
auth_alg=OPEN
sim_num=1
priority=13893
}
network={
ssid="TP-LINK_F11E"
psk="987654321"
key_mgmt=WPA-PSK
sim_num=1
priority=17293
}
ssid
å³ä¸ºæä»¬å¨ WLAN 设置éçå°çå称ï¼psk
为å¯ç ï¼key_mgmt
为å®å
¨å å¯æ¹å¼ã
å¦æ Android O æ以åï¼WiFi å¯ç ä¿åçå°åæååï¼æ¯å¨ WifiConfigStore.xml
éé¢
adb shell
su
cat /data/misc/wifi/WifiConfigStore.xml
è¾åºæ ¼å¼ï¼
æ°æ®é¡¹è¾å¤ï¼åªéå
³æ³¨ ConfigKey
ï¼WiFi ååï¼å PreSharedKey
ï¼WiFi å¯ç ï¼å³å¯
<string name="ConfigKey">"Wi-Fi"WPA_PSK</string>
<string name="PreSharedKey">"931907334"</string>
设置系ç»æ¥æåæ¶é´
注ï¼éè¦ root æéã
å½ä»¤ï¼
adb shell
su
date -s 20160823.131500
表示å°ç³»ç»æ¥æåæ¶é´æ´æ¹ä¸º 2016 å¹´ 08 æ 23 æ¥ 13 ç¹ 15 å 00 ç§ã
éå¯ææº
å½ä»¤ï¼
adb reboot
æ£æµè®¾å¤æ¯å¦å·² root
å½ä»¤ï¼
adb shell
su
æ¤æ¶å½ä»¤è¡æç¤ºç¬¦æ¯ $
å表示没æ root æéï¼æ¯ #
å表示已 rootã
ä½¿ç¨ Monkey è¿è¡ååæµè¯
Monkey å¯ä»¥çæ伪éæºç¨æ·äºä»¶æ¥æ¨¡æåå»ã触æ¸ãæå¿çæä½ï¼å¯ä»¥å¯¹æ£å¨å¼åä¸çç¨åºè¿è¡éæºååæµè¯ã
ç®åç¨æ³ï¼
adb shell monkey -p <packagename> -v 500
表示å <packagename>
æå®çåºç¨ç¨åºåé 500 个伪éæºäºä»¶ã
Monkey ç详ç»ç¨æ³åè å®æ¹ææ¡£ã
å¼å¯/å ³é WiFi
注ï¼éè¦ root æéã
ææ¶éè¦æ§å¶è®¾å¤ç WiFi ç¶æï¼å¯ä»¥ç¨ä»¥ä¸æ令å®æã
å¼å¯ WiFiï¼
adb root
adb shell svc wifi enable
å ³é WiFiï¼
adb root
adb shell svc wifi disable
è¥æ§è¡æåï¼è¾åºä¸ºç©ºï¼è¥æªåå¾ root æéæ§è¡æ¤å½ä»¤ï¼å°æ§è¡å¤±è´¥ï¼è¾åº Killed
ã
å·æºç¸å ³å½ä»¤
éå¯å° Recovery 模å¼
å½ä»¤ï¼
adb reboot recovery
ä» Recovery éå¯å° Android
å½ä»¤ï¼
adb reboot
éå¯å° Fastboot 模å¼
å½ä»¤ï¼
adb reboot bootloader
éè¿ sideload æ´æ°ç³»ç»
å¦ææ们ä¸è½½äº Android 设å¤å¯¹åºçç³»ç»æ´æ°å å°çµèä¸ï¼é£ä¹ä¹å¯ä»¥éè¿ adb æ¥å®ææ´æ°ã
以 Recovery 模å¼ä¸æ´æ°ä¸ºä¾ï¼
-
éå¯å° Recovery 模å¼ã
å½ä»¤ï¼
adb reboot recovery
-
å¨è®¾å¤ç Recovery çé¢ä¸æä½è¿å ¥
Apply update
-Apply from ADB
ã注ï¼ä¸åç Recovery èåå¯è½ä¸æ¤æå·®å¼ï¼æçæ¯ä¸çº§èåå°±æ
Apply update from ADB
ã -
éè¿ adb ä¸ä¼ åæ´æ°ç³»ç»ã
å½ä»¤ï¼
adb sideload <path-to-update.zip>
å®å ¨ç¸å ³å½ä»¤
å¯ç¨/ç¦ç¨ SELinux
å¯ç¨ SELinux
adb root
adb shell setenforce 1
ç¦ç¨ SELinux
adb root
adb shell setenforce 0
å¯ç¨/ç¦ç¨ dm_verity
å¯ç¨ dm_verity
adb root
adb enable-verity
ç¦ç¨ dm_verity
adb root
adb disable-verity
æ´å¤ adb shell å½ä»¤
Android ç³»ç»æ¯åºäº Linux å
æ ¸çï¼æ以 Linux éçå¾å¤å½ä»¤å¨ Android éä¹æç¸åæ类似çå®ç°ï¼å¨ adb shell
éå¯ä»¥è°ç¨ãæ¬ææ¡£åé¢çé¨åå
容已ç»ç¨å°äº adb shell
å½ä»¤ã
æ¥çè¿ç¨
å½ä»¤ï¼
adb shell ps
è¾åºç¤ºä¾ï¼
USER PID PPID VSIZE RSS WCHAN PC NAME
root 1 0 8904 788 ffffffff 00000000 S /init
root 2 0 0 0 ffffffff 00000000 S kthreadd
...
u0_a71 7779 5926 1538748 48896 ffffffff 00000000 S com.sohu.inputmethod.sogou:classic
u0_a58 7963 5926 1561916 59568 ffffffff 00000000 S org.mazhuang.boottimemeasure
...
shell 8750 217 10640 740 00000000 b6f28340 R ps
ååå«ä¹ï¼
åå | å«ä¹ |
---|---|
USER | æå±ç¨æ· |
PID | è¿ç¨ ID |
PPID | ç¶è¿ç¨ ID |
NAME | è¿ç¨å |
æ¥çå®æ¶èµæºå ç¨æ åµ
å½ä»¤ï¼
adb shell top
è¾åºç¤ºä¾ï¼
User 0%, System 6%, IOW 0%, IRQ 0%
User 3 + Nice 0 + Sys 21 + Idle 280 + IOW 0 + IRQ 0 + SIRQ 3 = 307
PID PR CPU% S #THR VSS RSS PCY UID Name
8763 0 3% R 1 10640K 1064K fg shell top
131 0 3% S 1 0K 0K fg root dhd_dpc
6144 0 0% S 115 1682004K 115916K fg system system_server
132 0 0% S 1 0K 0K fg root dhd_rxf
1731 0 0% S 6 20288K 788K fg root /system/bin/mpdecision
217 0 0% S 6 18008K 356K fg shell /sbin/adbd
...
7779 2 0% S 19 1538748K 48896K bg u0_a71 com.sohu.inputmethod.sogou:classic
7963 0 0% S 18 1561916K 59568K fg u0_a58 org.mazhuang.boottimemeasure
...
ååå«ä¹ï¼
åå | å«ä¹ |
---|---|
PID | è¿ç¨ ID |
PR | ä¼å 级 |
CPU% | å½åç¬é´å ç¨ CPU ç¾åæ¯ |
S | è¿ç¨ç¶æï¼R=è¿è¡ï¼S=ç¡ç ï¼T=è·è¸ª/åæ¢ï¼Z=åµå°¸è¿ç¨ï¼ |
#THR | 线ç¨æ° |
VSS | Virtual Set Size èæèç¨å åï¼å å«å ±äº«åºå ç¨çå åï¼ |
RSS | Resident Set Size å®é 使ç¨ç©çå åï¼å å«å ±äº«åºå ç¨çå åï¼ |
PCY | è°åº¦çç¥ä¼å 级ï¼SP_BACKGROUND/SPFOREGROUND |
UID | è¿ç¨ææè çç¨æ· ID |
NAME | è¿ç¨å |
top
å½ä»¤è¿æ¯æä¸äºå½ä»¤è¡åæ°ï¼è¯¦ç»ç¨æ³å¦ä¸ï¼
Usage: top [ -m max_procs ] [ -n iterations ] [ -d delay ] [ -s sort_column ] [ -t ] [ -h ]
-m num æå¤æ¾ç¤ºå¤å°ä¸ªè¿ç¨
-n num å·æ°å¤å°æ¬¡åéåº
-d num å·æ°æ¶é´é´éï¼åä½ç§ï¼é»è®¤å¼ 5ï¼
-s col ææåæåºï¼å¯ç¨ col å¼ï¼cpu, vss, rss, thrï¼
-t æ¾ç¤ºçº¿ç¨ä¿¡æ¯
-h æ¾ç¤ºå¸®å©ææ¡£
æ¥çè¿ç¨ UID
æ两ç§æ¹æ¡ï¼
-
adb shell dumpsys package <packagename> | grep userId=
å¦ï¼
$ adb shell dumpsys package org.mazhuang.guanggoo | grep userId= userId=10394
-
éè¿ ps å½ä»¤æ¾å°å¯¹åºè¿ç¨ç pid ä¹å
adb shell cat /proc/<pid>/status | grep Uid
å¦ï¼
$ adb shell gemini:/ $ ps | grep org.mazhuang.guanggoo u0_a394 28635 770 1795812 78736 SyS_epoll_ 0000000000 S org.mazhuang.guanggoo gemini:/ $ cat /proc/28635/status | grep Uid Uid: 10394 10394 10394 10394 gemini:/ $
å ¶å®
å¦ä¸æ¯å ¶å®å¸¸ç¨å½ä»¤çç®åæè¿°ï¼åæå·²ç»ä¸é¨è®²è¿çå½ä»¤ä¸åé¢å¤è¯´æï¼
å½ä»¤ | åè½ |
---|---|
cat | æ¾ç¤ºæ件å 容 |
cd | åæ¢ç®å½ |
chmod | æ¹åæ件çåå模å¼/访é®æé |
df | æ¥çç£ç空é´ä½¿ç¨æ åµ |
grep | è¿æ»¤è¾åº |
kill | ææ»æå® PID çè¿ç¨ |
ls | å举ç®å½å 容 |
mount | æè½½ç®å½çæ¥çå管ç |
mv | 移å¨æéå½åæ件 |
ps | æ¥çæ£å¨è¿è¡çè¿ç¨ |
rm | å é¤æ件 |
top | æ¥çè¿ç¨çèµæºå ç¨æ åµ |
常è§é®é¢
å¯å¨ adb server 失败
åºéæ示
error: protocol fault (couldn't read status): No error
å¯è½åå
adb server è¿ç¨æ³ä½¿ç¨ç 5037 端å£è¢«å ç¨ã
解å³æ¹æ¡
æ¾å°å ç¨ 5037 端å£çè¿ç¨ï¼ç¶åç»æ¢å®ã以 Windows ä¸ä¸ºä¾ï¼
netstat -ano | findstr LISTENING
...
TCP 0.0.0.0:5037 0.0.0.0:0 LISTENING 1548
...
è¿é 1548 å³ä¸ºè¿ç¨ IDï¼ç¨å½ä»¤ç»æ该è¿ç¨ï¼
taskkill /PID 1548
ç¶ååå¯å¨ adb 就没é®é¢äºã
com.android.ddmlib.AdbCommandRejectedException
å¨ Android Studio éæ°å»ºä¸ä¸ªæ¨¡æå¨ï¼ä½æ¯ç¨ adb ä¸ç´è¿æ¥ä¸ä¸ï¼æ示ï¼
com.android.ddmlib.AdbCommandRejectedException: device unauthorized.
This adb server's $ADB_VENDOR_KEYS is not set
Try 'adb kill-server' if that seems wrong.
Otherwise check for a confirmation dialog on your device.
å¨ææºä¸å®è£ ä¸ä¸ªç»ç«¯ç¶åæ§è¡ su æ示没æ该å½ä»¤ï¼è¿ä¸æ£å¸¸ã
äºæ¯å é¤è¯¥æ¨¡æå¨åéæ°ä¸è½½å®è£ ä¸æ¬¡ï¼è¿æ¬¡å°±æ£å¸¸äºã
adb çéå®æ¹å®ç°
- fb-adb - A better shell for Android devices (for Mac).
ç¸å ³å½ä»¤
- aapt
- am
- dumpsys
- pm
- uiautomator
è´è°¢
æè°¢æå们æ ç§çå享ä¸è¡¥å ï¼æåä¸åå åï¼ã
zxningï¼linhua55ï¼codeskyblueï¼seasonyuuï¼fan123199ï¼zhEdwardï¼0x8BADFOODï¼keith666666ï¼shawnlinboyï¼s-xqï¼ lucky9322ã
åèé¾æ¥
- Android Debug Bridge
- ADB Shell Commands
- logcat Command-line Tool
- Android ADBå½ä»¤å¤§å ¨
- adb å½ä»¤è¡ç使ç¨è®°å½
- Android ADBå½ä»¤å¤§å ¨(éè¿ADBå½ä»¤æ¥çwifiå¯ç ãMACå°åã设å¤ä¿¡æ¯ãæä½æ件ãæ¥çæ件ãæ¥å¿ä¿¡æ¯ãå¸è½½ãå¯å¨åå®è£ APKç)
- é£äºåAndroidå¼åå¿ é¡»ç¥éçADBå½ä»¤
- adb shell top
- åé«æä¸æ ·ä½¿ç¨ADBå½ä»¤è¡ï¼2ï¼