導航:首頁 > 操作系統 > android代碼adb

android代碼adb

發布時間:2023-03-11 05:57:17

android 常用adb命令

常用adb 命令

配置mat 環境,因為從 android profile直接獲取到的hprof文件格式與mat的格式不兼容,所以需要使用工具轉換一下

第 1 行:進程信息

總共(total):754個
運行中(running)狀態:1個
休眠(sleeping)狀態:753個
停止(stopped)狀態:0個
僵屍(zombie)狀態:0個

第 2 行:內存信息

5.5G total:物理內存總量
5.4G used:使用中的內存量
165M free:空閑內存量
76M buffers: 緩存的內存量

第 3 行:Swap分區信息

2.5G total:交換區總量
789M used:使用的交換區大小
1.7G free:空閑交換區大小
2.4G cached:緩沖的交換區大小

內存監控時,可以監控swap交換分區的used,如果這個數值在不斷的變化,說明內核在不斷進行內存和swap的數據交換,這是內存不夠用了。

第 4 行:CPU信息

800%cpu:8核cpu
100%user:用戶進程使用CPU佔比
3%nice:優先值為負的進程佔比
54%sys:內核進程使用CPU佔比
641%idle:除IO等待時間以外的其它等待時間佔比
0%iow:IO等待時間佔比
3%irq:硬中斷時間佔比
0%sirq:軟中斷時間佔比

第 5 行及以下:各進程的狀態監控

PID:進程id
USER:進程所屬用戶
PR:進程優先順序
NI:nice值,負值表示高優先順序,正值表示低優先順序
VIRT:進程使用的虛擬內存總量,VIRT=SWAP+RES
RES:進程使用的、未被換出的物理內存大小,RES=CODE+DATA
SHR:共享內存大小
S:進程狀態
%CPU:上次更新到現在的CPU佔用時間比
%MEM:使用物理內存佔比
TIME+:進程時間的CPU時間總計,單位1/100秒
ARGS:進程名

Ⅱ [Android] 命令行工具adb

adb:Android Debug Bridge (安卓調試橋)
是一個命令行工具,用於電腦端和模擬器或者是設備之間的交互。

它是一個C/S架構程序,由3部分組成:

我們來看看adb是如何工作的。

時序圖:

這里講的是先安裝了android studio,然後使用adb的步驟。

這里以MAC系統添加為例

apt-get install adb

如果安裝某個apk不成功,可以使用adb安裝下,就可以看到具體不成功的錯誤。
adb install xxx.apk

adb devices

adb shell pm list packages

adb shell mpsys battery

adb exec-out screencap -p > test.png

參考:
https://developer.android.google.cn/studio/run/device
https://anqz.github.io/2015-05-21-Intro-adb

Ⅲ 在android代碼里怎麼執行adb命令

Android中執行adb shell命令的方式如下: /** * 執行一個shell命令,並返回字元串值 * * @param cmd * 命令名稱&參數組成的數組(例如:{"/system/bin/cat", "/proc/version"}) * @param workdirectory * 命令執行路徑(例如:"system/bin/") * @return 執行結果組成的字元串 * @throws IOException */ public static synchronized String run(String[] cmd, String workdirectory) throws IOException { StringBuffer result = new StringBuffer(); try { // 創建操作系統進程(也可以由Runtime.exec()啟動) // Runtime runtime = Runtime.getRuntime(); // Process proc = runtime.exec(cmd); // InputStream inputstream = proc.getInputStream(); ProcessBuilder builder = new ProcessBuilder(cmd); InputStream in = null; // 設置一個路徑(絕對路徑了就不一定需要) if (workdirectory != null) { // 設置工作目錄(同上) builder.directory(new File(workdirectory)); // 合並標准錯誤和標准輸出 builder.redirectErrorStream(true); // 啟動一個新進程 Process process = builder.start(); // 讀取進程標准輸出流 in = process.getInputStream(); byte[] re = new byte[1024]; while (in.read(re) != -1) { result = result.append(new String(re)); } } // 關閉輸入流 if (in != null) { in.close(); } } catch (Exception ex) { ex.printStackTrace(); } return result.toString(); }

Ⅳ 常用的安卓手機adb命令總結

很早就想整理一下自己平時常用的一些adb命令,不僅為了便於以後查找,而且整理的過程自己又重新復習了一遍,但是當我開始在度娘一搜的時候,發現很多人已經寫的非常詳細了,尤其是當我發現了這篇adb概括

心中一句NND,怎麼可以寫的這么詳細,瞬間沒了想寫這篇文章的慾望,如果你點了鏈接發現確實很全,那麼恭喜你可以關掉這篇了,哈哈哈。

我就不這么想的,雖然很全,但不是我常用的,因人而異,所以我就權當記筆記+替這哥們宣傳了。

– adb devices , 獲取設備列表及設備狀態

設備的狀態有 3 種

device , 設備連接正常

offline , 設備離線,連接出現異常

unauthorized 設備為進行授權,需要在設備上是否允許調試對話框進行授權

offline情況解決辦法,先執行adb kill-server 命令,再執行adb start-server 命令,再嘗試adb devices 查看列表,如果還是offline,來來來,使用必殺技,重啟大法。

當電腦連接多個android設備並可用時,所有的adb命令都需要指定設備後執行(當然你也可以移除多餘的設備)

adb -s <設備名稱> install/uninstall/shell/pull/push等命令

– adb install app在pc硬碟路徑,選中app直接拖入即可

常見的錯誤情況

INSTALL_FAILED_TEST_ONLY, 安裝的app的debug版本的,未簽名,adb install -t 路徑即可安裝

INSTALL_FAILED_DUPLICATE_PACKAGE, 已經安裝相同包名的app, 先卸載再安裝

– adb uninstall app的包名,卸載app

adb pull 將 Android 設備上的文件或者文件夾復制到本地

adb pull sdcard/Android/111.txt E:\

小技巧,可以將本地路徑指定為桌面,方便查看, 在桌面按住shift鍵,滑鼠右鍵選擇在此處打開命令行窗口,直接輸入adb pull sdcard/Android/111.txt 執行,就可將111.txt復制到桌面。

前提是設備已經獲取root許可權

adb root

adb remount

adb push 將pc上文件復制到android設備中,修改room原生應用時比較頻繁使用,如settings.apk, launcher3.apk

– adb shell pm 命令

adb shell pm list package 列出android設備上的所有app

adb shell pm list package -s 列出android設備上的系統級別app

adb shell pm list package -3 列出android設備上的第三方app(用戶安裝的)

adb shell pm list package -f 列出app包名及對應的apk名及存放位置

adb shell pm list package -i 列出app包名及其安裝來源(應用市場名稱)

adb shell pm mp app包名 列出app的相關信息,類似獲取Manifest文件內容

-查看前台 Activity

adb shell mpsys activity activities 「| grep mFocusedActivity」

-adb shell am 命令

最常用的就是啟動指定的activity和發送指定的廣播

啟動指定的activity

操作指令 adb shell am start -n 包名/類名

註:如果啟動activity時,出現如下錯誤

java.lang.SecurityException: Permission Denial: starting Intent { flg=0x10000000 > > cmp=com.mediatek.engineermode/.io.Gpio } from null (pid=3083, uid=2000) not exported from uid 1001

解決辦法,1、如果是你自己可控的app,那麼找到你要調用的activity在manifest.xml中,增加

1

配置即可, android:name="" 可以為空字元串。

2、如果是不可控的app,例如我調用的系統原生app,那麼你就洗洗睡吧,別折騰了,除非你修改源碼和上邊一樣操作,重新push替換原來的app。

啟動默認瀏覽器打開一個網頁

adb shell am start -a android.intent.action.VIEW -d  * ********

先停止目標應用,再啟動

adb shell am start -s com.android.camera/.Camera

啟動相機

adb shell am start -n com.android.camera/.Camera

啟動設置

adb shell am start -n com.android.settings/com.android.settings.Settings

啟動Wifi設置

adb shell am start -n com.android.settings/com.android.settings.wifi.WifiSettings

啟動藍牙設置

adb shell am start -n com.android.settings/com.android.settings.bluetooth.BluetoothSettings

其它的類似只要你能在manifest中找到配置的,都可以通過這種方法來調用

發送指定的廣播

操作指令 adb shell am broadcast -a 廣播名 --ei/es/ez 參數名 參數值 --ei/es/ez 參數名 參數值

–ei integer 值

–es String 值

–ez boolean 值

–ef float 值

–el long 值

例如之前寫的

Android6.0 源碼修改之Setting列表配置項動態添加和靜態添加, 當中就通過發送廣播來接收增加配置列表項

adb shell am broadcast -a cn.dynamic.add.settingcategoryitem --es location 「0-2」 --es title 「紅」 --es intent 「com.android.settings.SCHEDULE_POWER_ON_OFF_SETTING」

-adb shell input keycode 指令

HOME 鍵 adb shell input keycode 3

返回鍵 adb shell input keycode 4

打開瀏覽器 adb shell input keycode 64

-adb shell wm 指令

屏幕解析度 adb shell wm size

屏幕密度 adb shell wm density

adb shell wm density 320/480/640 可修改屏幕密度查看效果,對應Launcher圖標會縮放

adb shell ifconfig 命令

IP 地址 adb shell ifconfig 「| grep Mask」

WIFI 地址 adb shell ifconfig wlan0

狀態欄和導航欄的顯示隱藏

命令:

adb shell settings put global policy_control

可由如下幾種鍵及其對應的值組成,格式為 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.preconfirms=*

表示恢復顯示

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 shell am force-stop app  關閉APP

adb shell pm clear APP  app進程被殺死,且會清楚所有數據

 1:查找手機安裝應用的包名:adb shell pm list packages -f

    2:查看系統盤符:adb shell df

    3:查看Log 1:adb shell 2: logcat | grep "abc"

    4:刪除應用:1:adbremount  2:adb shell  3:cdsystem/app   4:rm *.apk

    5:安裝APK: adbinstall -r *.apk  或者 adb push*.apk  /system/app

    6:查看APP啟動的時間指令

     adb shell am start -W -ncom.android.dialer/.DialtactsActivity  (W是大寫)執行命令後APP會自 動啟動,其中ThisTime即是本次     App啟動所花費的時間。

    7:查看包名中當前所在進程信息:adb shell ps | grep +包名

    8:查看Activity運行的任務棧:adb shell mpsys activity

     9:查看鍵值:adb logcat | grep intercep  -i

    10:查看模塊所佔有的CPU資源:adb shell top -d 2 -m 10

    11:查看可用系統的權

           $ adb shell

           # pm list permissions

   12:模擬按鍵的輸入:adb shell input keyevent + 鍵值

      eg:  adb shell input keyevent  82   表示menu

             adb shell input keyevent  3     表示home

            adb shell input keyevent  19   表示up

             adb shell input keyevent  20   表示down

            adb shell input keyevent  21   表示left

             adb shell input keyevent  22   表示right

            adb shell input keyevent  66   表示enter

             adb shell input keyevent  4     表示back

    13:模擬滑動輸入:adb shell input touchscreen <x1> <y1> <x2> <y2>

        eg: adb shell input touchscreen swipe 18 665 18 350

    14:啟動一個Activity : adb shell am start -n 包名+類名

    15:錄制屏幕:adb shell screenrecord /sdcard/demo.mp4

    16:重新啟動:adb reboot   

    17:Monkey的基本用法下面是一個更為典型的命令行示例,它啟動指定的應用程序,並向其發送500個偽隨機事件:

          $ adb shell monkey -p your.package.name -v 500

        如果跑桌面或者systemUi的monkey的話:

         adb shell monkey -v -v -p 桌麵包名 --pct-touch 50 --pct-motion 30 --pct-syskeys 20 --throttle 300 -s 200 200000

    18:查找第三方應用的詳細信息:

        adb shell mpsys package +第三方包名(com.txznet.webchat)

Ⅳ Android—ADB命令

1、查看最上層成activity名字:

adb shell mpsys activity | findstr "mFocusedActivity"
或者 adb shell mpsys window w | findstr / | findstr name=
2、查看Activity的任務棧:

3、顯示所有的activities的信息,包括任務棧等:

adb shell mpsys activity
4、查看Android應用包名package和入口activity名稱 :

aapt mp badging E:\apk\es3.apk
5、顯示accounts信息:

adb shell mpsys account
5、顯示CPU信息 :

adb shell mpsys cpuinfo
查看CPU使用信息

adb shell top -n 1 -d 0.5 | findstr proc_ id
6、顯示鍵盤,窗口和它們的關系

adb shell mpsys window
當我們需要知道設備的解析度時

adb shell mpsys window displays
查看UI繪制的各個層級信息

adb shell mpsys SurfaceFlinger
7、顯示wifi信息

adb shell mpsys wifi
8、電量信息及CPU 使用時長

adb shell mpsys batteryinfo $package_name
9、獲取安裝包信息

adb shell mpsys package packagename
10、每個應用的啟動次數和時間

adb shell mpsys usagestats
11、顯示狀態欄相關的信息

adb shell mpsys statusbar
12、內存信息(meminfo package_name or pid 使用程序的包名或者進程id顯示內存信息)

adb shell mpsys meminfo
得到com.teleca.robin.test進程使用的內存的信息 adb shell mpsys meminfo com.teleca.robin.test
13、磁碟相關信息

adb shell mpsys diskstats
14、電池相關信息

adb shell mpsys battery
15、顯示Alarm信息

adb shell mpsys alarm
統計系統耗電量

adb shell mpsys batterystats
設置線程的優先順序

adb shell mpsys activity|grep oom_adj
16、強制關閉一個應用程序;

adb shell am force-stop <PACKAGE>
17、查看內存信息

adb shell cat proc/meminfo
指定進程內存地址映射

adb shell cat proc/pid/maps
指定進程內存詳細使用信息

adb shell cat proc/pid/smaps
VSS. RSS. PSS. USS 信息

adb shell procrank
指定進程VSS. RSS. PSS. USS 詳細信息

adb shell procmem pid
18、查看可輸入的設備

adb shell getevent -p
19、獲得特定設備的輸入信息

adb shell getevent /dev/input/event0
20、點擊

adb shell input tap x y
21、發送按鍵

adb shell input keyevent 82(keycode)
22、輸入文本

adb shell input text XXXX
23、查看報名中包含mobileqq的進程

adb shell ps | findstr mobileqq
24、遠程進程ID

adb jdwp
25、獲取序列號

adb get-serialno
26、重啟到bootloader,即刷機模式

adb reboot bootloader
27、重啟到recovery,即恢復模式

adb reboot recovery
28、獲取機器MAC地址:

adb shell cat /sys/class/net/wlan0/address
29、獲取CPU序列號

adb shell cat /proc/cpuinfo
30、覆蓋安裝(保留數據和緩存文件,重新安裝apk)

adb install -r <apkfile>
31、安裝apk到sd卡

adb install -s <apkfile>
32、卸載app但保留數據和緩存文件

adb uninstall -k <package>
33、查看設備cpu和內存佔用情況

adb shell top
34、查看佔用內存前6的app

adb shell top -m 6
35、刷新一次內存信息,然後返回

adb shell top -n 1
36、查詢各進程內存使用情況

adb shell procrank
37、查看指定進程狀態

adb shell ps -x [PID]
38、查看後台services信息

adb shell service list
39、查看當前內存佔用(該方式只能得出系統整個內存的大概使用情況) 車
如果你想查看所有進程的內存使用情況

adb shell procrank
40、查看IO內存分區

adb shell cat /proc/iomem
41、查看wifi密碼

adb shell cat /data/misc/wifi/*.conf
42、清除log緩存

adb logcat -c
43、查看設備信息

adb shell cat /system/build.prop
44、跑monkey

adb shell monkey -v -p your.package.name 500
45、列出目標設備上安裝的所有app的包名

adb shell pm list packages
46、截屏命令:

adb shell screencap -p /sdcard/screen.png

adb pull /sdcard/screen.png

adb shell rm /sdcard/screen.png
錄制手機屏幕,視頻格式為mp4,存放到手機sd卡里,默認錄制時間為180s:

adb shell screenrecord
限制視頻錄制時間為10s,如果不限制,默認180s:

adb shell screenrecord --time-limit 10 /sdcard/demo.mp4
指定視頻解析度大小:

adb shell screenrecord --size 1280*720 /sdcard/demo.mp4
指定視頻的比特率:

adb shell screenrecord --bit-rate 6000000 /sdcard/demo.mp4
在命令行顯示log:

adb shell screenrecord --time-limit 10 --verbose /sdcard/demo.mp4
47、設置、獲取屬性信息

adb shell getprop [key]

adb shell setprop [key] [value]
監聽系統屬性的變化,如果期間系統的屬性發生變化則把變化的值顯示出來

adb shell watchprops
48、adb logcat 每一條日誌消息都有一個標記和優先順序與其關聯。
(1)標記是一個簡短的字元串,用於標識原始消息的來源 (例如"View" 來源於顯示系統)。優先順序是下面的字元,順序是從低到高:

V — 明細 (最低優先順序)
D — 調試
I — 信息
W — 警告
E — 錯誤
F — 嚴重錯誤
S — 無記載 (最高優先順序,沒有什麼會被記載)
(2)查看過濾日誌

adb logcat ActivityManager:I *:S
*:S 用於設置所有標記的日誌優先順序為S,可以確保輸出符合指定的過濾器設置的一種推薦的方式,
這樣過濾器就成為了日誌輸出的「白名單」
顯示所有優先順序大於等於「warning」的日誌

adb logcat *:W
(3)日誌消息在標記和優先順序之外還有很多元數據欄位,這些欄位可以通過修改輸出格式來控制輸出結果, -v 選項加上下面列出的內容可以控制輸出欄位:

brief — 顯示優先順序/標記和原始進程的PID (默認格式)
process — 僅顯示進程PID
tag — 僅顯示優先順序/標記
thread — 僅顯示進程:線程和優先順序/標記
raw — 顯示原始的日誌信息,沒有其他的元數據欄位
time — 顯示日期,調用時間,優先順序/標記,PID
long —顯示所有的元數據欄位並且用空行分隔消息內容
使用 thread 輸出格式

adb logcat -v thread
(4)Android日誌系統為日誌消息保持了多個循環緩沖區,而且不是所有的消息都被發送到默認緩沖區,要想查看這些附加的緩沖區,可以使用-b 選項,以下是可以指定的緩沖區:

radio — 查看包含在無線/電話相關的緩沖區消息
events — 查看事件相關的消息
main — 查看主緩沖區 (默認緩沖區)
查看radio緩沖區

adb logcat -b radio
48、列印應用程序的log

adb logcat -b main -v time>app.log
49、列印射頻相關的log,SIM STK也會在裡面,modem相關的ATcommand等,當然跟QXDM差的很遠了

adb logcat -b radio -v time> radio.log
50、列印系統事件的日誌,比如觸屏事件

adb logcat -b events -v time
51、tcpmp 是很有用的,對於TCP/IP協議相關的都可以使用這個來抓

adb shell tcpmp -s 10000 -w /sdcard/capture.pcap
52、狀態信息,裡麵包含有dmesg,mpstate和mpsys

adb bugreport>bugreport.log
53、kernel的log凡是跟kernel相關的,比如driver出了問題(相機,藍牙,usb,啟動,等等吧)

adb shell dmesg > ldmesg_kernel.log
54、mpstate是系統狀態信息,裡面比較全,包括手機當前的內存信息、cpu信息、logcat緩存,kernel緩存等等 。

adb shell mpstate
55、關於系統service的內容都在這個裡面

adb shell mpsys
56、顯示內存信息

adb shell mpsys meminfo system

Ⅵ Android常用的ADB命令

重啟:adb reboot

推文件:adb push E:\xxx.txt storage/sdcard

拉文件:adb push storage/sdcard .

將日誌保存到電腦文件: adb logcat > xxx. xxx電腦文本地址

清除指定應用的數據和緩存:adb shell pm clear 例:adb shell pm clear com.yzl.test

查看日誌緩沖區大小:adb shell logcat-g

設置日誌緩沖區大小:adb logcat-G10M

打開藍牙:adb shell svc bluetooth enable

關閉藍牙:adb shell svc bluetooth disable

查詢藍牙是否打開:adb shell settingsgetglobalbluetooth_on

獲取藍牙Mac地址:adb shell settingsgetsecure bluetooth_address

獲取某個包名的安裝路徑:adb shell pm path com.xx.xx

查看所有存活的進程:adb shell ps

過濾關鍵字查看adb shell ps|findstr xxx

強制安裝版本號更低的apk:adb install -r -d "C:\xx.apk"

對指定應用進行500次模擬觸摸事件:adb shell monkey -p com.yzl.test -v 500

查看某個apk的應用信息、版本信息:adb shell mpsys package com.yzl.test

查看已安裝應用列表:adb shell pm list package或adb shell pm list packages-s

Ⅶ 深入扒一扒安卓中的ADB命令

做過安卓開發的朋友或多或少都遇到過讓人厭惡的類似於「could not read ok from ADB Server」的錯誤。產生這個錯誤的原因可能多種多樣,每次遇到問題的時候,可能大部分人都和我一樣,去google一下這個問題別人是如何解決的。假設一下子找到解決了,就放過,下次在遇到的時候同樣的再去google一下就好了。但是,這樣不是正確的治學態度,為此孔祥子決定去扒一扒!

如下,是我在發現Android studio連接不上手機的時候,嘗試去啟動一個adb server,但是失敗了。

<pre>

根據問題提示,5037埠被佔用了。下面就來看看到底是哪一個埠被佔用。

<pre>

C:Userszxy>netstat -ano | findstr "5037"
TCP 127.0.0.1:5037 0.0.0.0:0 LISTENING 7912
TCP 127.0.0.1:5037 127.0.0.1:50025 ESTABLISHED 7912
TCP 127.0.0.1:5037 127.0.0.1:56501 ESTABLISHED 7912
TCP 127.0.0.1:50025 127.0.0.1:5037 ESTABLISHED 7120
TCP 127.0.0.1:56501 127.0.0.1:5037 ESTABLISHED 1264
</pre>

果然,5037被進程id為7912的進程佔用了。順藤摸瓜,看看到底什麼進程搗的鬼,
<pre>
C:Userszxy>tasklist | findstr "7912"
romaster_daemon.exe 7912 Console 1 3,024 K
</pre>

看到了嗎,是這個進程romaster_daemon.exe ,好了,到此為止找出來是哪一個程序了,下面打開任務管理器,kill掉就可以了。

Android adb(Android Debug Bridge) 是一個通用命令行工具,其允許您與模擬器實例或連接的 Android 設備進行通信。它可為各種設備操作提供便利,如安裝和調試應用,並提供對 Unix shell(可用來在模擬器或連接的設備上運行各種命令)的訪問。

該工具作為一個客戶端-伺服器程序,包括三個組件:
客戶端(adb client) ,該組件發送命令。客戶端在開發計算機上運行。可以通過發出 adb 命令從命令行終端調用客戶端。

這里說的客戶端,其實包含很廣泛。例如我們在命令行窗口運行一個adb命令,其實就是一個adb客戶端。還有,我們在android studio中通過點擊運行或者調試按鈕,app就安裝到手機裡面了,這個也可以看做是adb客戶端。對應的後台進程名稱 根據運行的程序的不同而不同。

後台程序 ,該組件在設備上運行命令。後台程序在每個模擬器或設備實例上作為後台進程運行。
也就說,開發者測試手機或者模擬器上運行的後台進程,負責接收命令,並運行命令。這個名字對應應該是adbd

具體如下

服務端 ,該組件管理客戶端和後台程序之間的通信。伺服器在開發計算機上作為後台進程運行。
您可以在 android_sdk/platform-tools/ 中找到 adb 工具
這個是在開發者自己的電腦上,運行的旨在管理adb客戶端和手機端的後台程序通信的一個管理程序。

具體流程如下

啟動一個 adb 客戶端時,此客戶端首先檢查是否有已運行的 adb 伺服器進程。如果沒有,它將啟動伺服器進程。當伺服器啟動時,它與本地 TCP 埠 5037 綁定,並偵聽從 adb 客戶端發送的命令—所有 adb 客戶端均使用埠 5037 與 adb 伺服器通信。

然後,伺服器設置與所有運行的模擬器/設備實例的連接。它通過掃描 5555 到 5585 之間(模擬器/設備使用的范圍)的奇數號埠查找模擬器/設備實例。伺服器一旦發現 adb 後台程序,它將設置與該埠的連接。請注意,每個模擬器/設備實例將獲取一對按順序排列的埠 , 這些埠包括用於控制台連接的偶數號埠和用於 adb 連接的奇數號埠。例如:

模擬器 1,控制台:5554
模擬器 1,adb:5555
模擬器 2,控制台:5556
模擬器 2,adb:5557
以此類推...

如上所示,在埠 5555 與 adb 連接的模擬器實例與偵聽埠 5554 的控制台的實例相同。

注意 ,這里所說的埠都是開發者電腦上的埠。

我的理解,偶數埠用來實際的數據傳輸。奇數埠用來發送控制命令和連接用的,例如調試。(如果不正確請指出)

當伺服器已設置與所有模擬器實例的連接後,您可以使用 adb 命令訪問這些實例。由於伺服器管理與模擬器/設備實例的連接,並處理來自多個 adb 客戶端的命令,因此,您可以從任意客戶端(或從某個腳本)控制任意模擬器/設備實例。

解讀一下
注意:上圖中的標識為黃色的區域的進程為後台守護進程。
Adb Server運行在開發者電腦上,任何adb client都要等待這個運行起來之後才能做後續的工作。電腦上的android studio或者eclipse等一些adb client和它交互。一旦adb client的命令被發送到手機中,並且被手機中的adbd接收之後,才能和手機交互。

然後在看一張更詳細的圖

這個圖,詳細的解釋了我運行adb命令中的詳細細節。

關於adb的詳細命令可以參考: http://adbshell.com/commands 這個網站詳。

看了之後,對於前面的5037被佔用,導致無法連接手機的原因,我想,我們應該有了更深層次的理解。同時對於其他情況的不能連接手機,我們下次就會有了自己的思考了。

Ⅷ Android 開發常用的adb命令

在Mac 下配置Android SDK的adb命令添加到環境變數:

1. 檢查 .bash_profile
使用 vim .bash_profile 打開該文件,如果該文件存在則直接進入如下第二個步驟,如果該文件不存在,可通過下面命令創建.bash_profile:
touch .bash_profile

2. 編輯 .bash_profile
打開.bash_profile文件,進行編輯,命令如下:
vim .bash_profile

添加如下內容, 以下是我的sdk的路徑,具體路徑根據自己sdk路徑稍作改動即可;

3. 保存 .bash_profile
esc 鍵後退,然後輸入 :wq 後保存退出;

4. 更新配置
source .bash_profile

(1) 查看當前顯示的activity的名字**

(2) 查看前台Activity

(3). 查看前台Activity的棧信息

結果如下:

在沒有root的手機里想adb pull出裡面的東西可以先用這個命令搜出位置,然後在pull出來

將apk後綴改成zip, 然後解壓

Ctrl + C 停止錄屏

配置fastboot命令環境變數

fastboot刷機步驟:

持續更新...

閱讀全文

與android代碼adb相關的資料

熱點內容
gcc編譯消耗內存過多 瀏覽:279
昌邑網站製作源碼 瀏覽:127
單片機的反向編譯 瀏覽:463
subsample演算法 瀏覽:899
蘋果免費看書app哪個最好 瀏覽:885
c語言加密怎麼弄 瀏覽:842
c語言編譯的錯誤提示 瀏覽:767
驗機蘋果app哪個最好 瀏覽:666
光遇國際服安卓如何購買禮包 瀏覽:55
163app怎麼下載 瀏覽:247
電腦程序員下場 瀏覽:45
編譯原理ll1文法判斷 瀏覽:727
qt用vs2015編譯 瀏覽:553
結婚日子最好的演算法 瀏覽:794
安卓怎麼把數據傳到蘋果里 瀏覽:504
編譯器標識 瀏覽:792
編程珠璣第三章 瀏覽:785
windows如何開啟tftp伺服器 瀏覽:110
歐姆龍plc編程指令表 瀏覽:189
程序員遠程收入不穩定 瀏覽:863