openvela之ADB

ADB(Android Debug Bridge)是一款功能豐富的命令行工具,旨在實現開發工作站與設備(如模擬器、實體設備)之間的通信。通過 ADB,開發者可以便捷地在設備上執行命令、傳輸文件、調試應用等。本文將詳細介紹 ADB 的工作原理、核心命令及使用方法,幫助你高效掌握這一工具。

一、ADB 的核心組件與工作原理

1. 三大核心組件

ADB 采用客戶端 - 服務器架構,包含三個關鍵部分:

  • 客戶端:運行在開發工作站上,負責發送命令(如通過命令行終端調用)。
  • 守護程序(adbd):作為后臺進程運行在設備上,負責執行客戶端發送的命令。
  • 服務器:同樣運行在開發工作站上的后臺進程,負責管理客戶端與守護程序之間的通信。

2. 工作流程

  1. 端口綁定:所有 ADB 客戶端通過 5037 端口 與 ADB 服務器通信。啟動客戶端時,若服務器未運行則自動啟動,并綁定到本地 5037 端口監聽命令。
  2. 設備連接:服務器啟動后,會掃描 5555-5585 之間的奇數端口(最多支持 16 個模擬器),尋找運行中的設備 / 模擬器。每個設備使用一對連續端口:
    • 偶數端口:用于控制臺連接(如 5554);
    • 奇數端口:用于 ADB 連接(如 5555)。
  3. 命令轉發:服務器與設備建立連接后,客戶端發送的命令由服務器轉發至目標設備的 adbd 執行,結果再經服務器返回給客戶端。

二、查詢已連接設備

在發送 ADB 命令前,需先確認已連接的設備列表,使用以下命令:

adb devices

在這里插入圖片描述

輸出說明
命令會返回設備的 序列號(唯一標識,如 emulator-5554)和 狀態:

  • offline:設備未連接到 ADB 或無響應;
  • device:設備已連接(但不代表系統完全啟動);
  • no device:無設備連接。

特殊情況:模擬器未列出?
若模擬器運行但未顯示在列表中,可能是以下原因導致:

  1. ADB 服務器未啟動;
  2. 模擬器通過 -port 或 -ports 指定了 5554-5584 之間的奇數端口;
  3. 端口空閑或模擬器切換到符合條件的其他端口;
  4. 啟動模擬器后才啟動 ADB 服務器。

解決辦法:重啟 ADB 服務器(adb kill-server 后再執行任意 ADB 命令)。

三、向指定設備發送命令

若存在多個設備 / 模擬器,需通過以下選項指定目標:

  • -d:指定連接的實體設備;
  • -e:指定運行的模擬器;
  • -s <serial_number>:通過序列號指定設備(推薦)。

命令格式:

adb [-d | -e | -s serial_number] command

1. 端口轉發

將主機端口的請求轉發到設備端口,用于調試網絡數據:

# 主機 6100 端口 → 設備 7100 端口
adb forward tcp:6100 tcp:7100# 主機 6100 端口 → 設備 logd(系統日志守護程序)
adb forward tcp:6100 local:logd

2. 傳輸文件

使用 pull(從設備復制到本地)和 push(從本地復制到設備)命令:

# 從設備拉取文件:adb pull <設備路徑> <本地路徑>
adb pull /sdcard/photo.jpg ~/Desktop/# 向設備推送文件:adb push <本地路徑> <設備路徑>
adb push ~/music/song.mp3 /sdcard/music/

3. 管理 ADB 服務器

  • 停止服務器:
adb kill-server
  • 重啟服務器:執行任意 ADB 命令(如 adb devices)即可自動啟動。

4. 查看所有支持的命令

如需了解完整命令列表,使用:

adb --help

四、執行 Shell 命令

通過 ADB 可直接在設備上運行 shell 命令,支持兩種方式:

1. 單條命令

# 示例:查看設備內存使用情況
adb shell free# 示例:列出設備上的應用包名
adb shell pm list packages

2. 交互式 Shell
啟動與設備的交互式命令行:

adb shell

在這里插入圖片描述

此時可直接輸入設備端的 shell 命令(如 lscd 等),退出時輸入 exit 或按 Control+D

總結

ADB 是連接開發工作站與設備的重要橋梁,通過其豐富的命令集,開發者可以高效地進行設備管理、文件傳輸、調試等操作。掌握 ADB 的工作原理和核心命令,能顯著提升openvela的開發效率。如需進一步探索,可通過 adb --help 查看所有命令的詳細說明。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/92691.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/92691.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/92691.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何控制需求交付節奏

有效控制需求的交付節奏&#xff0c;其核心在于將產品開發過程從一個不可預測的、時快時慢的混亂狀態&#xff0c;轉變為一套產出穩定、流程順暢、步調可持續的系統化交付機制。要成功構建這套機制&#xff0c;實現有節奏的價值交付&#xff0c;必須綜合運用五大關鍵策略&#…

匯編中常用寄存器介紹

X86-32位寄存器 4個數據寄存器&#xff1a;EAX、EBX、ECX和EDX; 2個變址和指針寄存器&#xff1a;ESI和EDI; 2個指針寄存器&#xff1a;ESP和EBP; 1個指令指針寄存器&#xff1a;EIP; 6個段寄存器&#xff1a;ES、CS、SS、DS、FS和GS; 1個標志寄存器&#xff1a;EFlags。 在X8…

SOMGAN:用自組織映射改善GAN的模式探索能力

論文信息 論文題目:Improving mode exploring capability ofgenerative adversarial nets by self-organizing map(利用自組織映射提高生成對抗網絡的模式探索能力) 期刊:Neurocomputing 摘要:生成對抗網絡(GANs)的出現將生成模型的研究推向了一個新的高潮。支持這一進步…

《匯編語言:基于X86處理器》第12章 復習題和練習

本篇記錄了《匯編語言&#xff1a;基于X86處理器》第12章 復習題和練習的筆記。12.6復習題和練習12.6.1 簡答題1.假設有二進制浮點數1101.01101&#xff0c;如何將其表示為十進制分數之和?答&#xff1a;1101.01101(1x)(1x)(0x)(1x)(0x)(1x)(1x)(1x)(1x) 13.406252.為什么十進…

ApacheCon Asia 2025 中國開源年度報告:Apache Doris 國內第一

上周剛落下帷幕的 ApacheCon Asia 2025 中&#xff0c;一個數據讓所有人都為之震撼&#xff1a;全球 Apache 基金會項目 OpenRank 排行榜中&#xff0c;Apache Doris 位居第二&#xff0c;在中國 Apache 項目中更是穩居第一。 這個排名意味著什么&#xff1f;在 Apache 基金會管…

Pytest中實現自動生成測試用例腳本代碼

&#x1f345; 點擊文末小卡片&#xff0c;免費獲取軟件測試全套資料&#xff0c;資料在手&#xff0c;漲薪更快在Python的測試框架中&#xff0c;我們通常會針對某個系統進行測試用例的維護&#xff0c;在對龐大系統進行用例維護時&#xff0c;往往會發現很多測試用例是差不多…

一周學會Matplotlib3 Python 數據可視化-標注 (Annotations)

鋒哥原創的Matplotlib3 Python數據可視化視頻教程&#xff1a; 2026版 Matplotlib3 Python 數據可視化 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili 課程介紹 本課程講解利用python進行數據可視化 科研繪圖-Matplotlib&#xff0c;學習Matplotlib圖形參數基本設置&…

安全合規1--實驗:ARP欺騙、mac洪水攻擊、ICMP攻擊、TCP SYN Flood攻擊

一、實驗環境 (思科的云實驗平臺)攻擊機&#xff1a;Kali Linux&#xff08;IP&#xff1a;192.168.234.128&#xff0c;MAC&#xff1a;00:00:29:35:64:EC&#xff09;目標1&#xff1a;網關&#xff08;IP&#xff1a;192.168.234.2&#xff0c;MAC&#xff1a;00:50:56:ED:D…

Linux下GCC的C++實現Hive到Snowflake數據遷移

程序結構 ├── main.cpp ├── config.json ├── hive_export/ ├── parquet_data/ ├── sql_scripts/ └── logs/核心代碼實現 (main.cpp) #include <iostream> #include <fstream> #include <vector> #include <thread> #include <mut…

drippingblues靶機教程

一、信息搜集首先將其在VirtualBOX中安裝&#xff0c;并將kali與靶機都設置為橋接模式緊接著我們掃描IP&#xff0c;來發現靶機地址&#xff0c;經過搜集&#xff0c;發現IP是192.168.1.9&#xff0c;我們去訪問一下緊接著我們掃一下開放了哪些端口。發現開放了21、22以及80端口…

39.【.NET8 實戰--孢子記賬--從單體到微服務--轉向微服務】--擴展功能--調整發布腳本

這篇文章&#xff0c;我們要調整發布腳本。之所以要調整發布腳本&#xff0c;是因為現在我們的項目有三個環境&#xff1a;本地&#xff08;Local&#xff09;、開發&#xff08;Development&#xff09;、生產&#xff08;Production&#xff09;。Tip&#xff1a;我們的項目雖…

商品、股指及ETF期權五檔盤口Tick級與分鐘級歷史行情數據多維解析

在金融數據分析領域&#xff0c;本地CSV文件是存儲高頻與低頻數據的常用載體。本文以期權市場數據為例&#xff0c;探討如何基于CSV格式處理分鐘級行情、高頻Tick數據、日頻數據、逐筆委托記錄、五檔訂單簿及歷史行情數據&#xff0c;并提供專業的技術實現方案。以下將從數據預…

云端軟件工程智能代理:任務委托與自動化實踐全解

云端軟件工程智能代理&#xff1a;任務委托與自動化實踐全解 背景與未來趨勢 隨著軟件工程復雜度不斷提升&#xff0c;開發者對自動化工具的依賴也日益增強。我們正進入一個“人機協作”的新時代&#xff0c;開發者可以專注于核心創新&#xff0c;將重復性、繁瑣的任務委托給智…

making stb style lib(1): do color print in console

col.h: see origin repo // origin repo: https://github.com/resyfer/libcol #ifndef _COL_HOL_H_ #define _COL_HOL_H_#include <stdlib.h> #include <stdio.h> #include <stdbool.h> #include <string.h> #include <math.h> // 新增&#xf…

llm本地部署+web訪問+交互

要實現基于llm的web訪問和交互&#xff0c;需支持對llm的訪問和對網絡搜索的調用。 這里使用ollama llm兼容openai sdk訪問&#xff1b;使用proxyless-llm-websearch模擬網絡搜索。 1 ollama本地部署 假設ollama已經部署&#xff0c;具體過程參考 在mac m1基于ollama運行dee…

自動駕駛數據閉環

自動駕駛的數據閉環是支撐算法持續迭代的核心機制&#xff0c;其本質是通過“數據采集-處理-訓練-部署-反饋”的循環&#xff0c;不斷優化模型對復雜場景的適應性。由于自動駕駛數據量極大&#xff08;單車日均TB級&#xff09;、場景多樣&#xff08;從常規道路到極端邊緣場景…

二十、MySQL-DQL-條件查詢

DQL-條件查詢代碼&#xff1a; DQL-條件查詢 -- 1.查詢 姓名 為 楊逍 的員工 select * from tb_emp where name 楊逍; -- 2.查詢 id小于等于5 的員工信息 select * from tb_emp where id < 5; -- 3.查詢 沒有分配職位 的員工信息 select * from tb_emp where job is null; …

Mac下安裝Conda虛擬環境管理器

Conda 是一個開源的包、環境管理器&#xff0c;可以用于在同一個機器上創建不同的虛擬環境&#xff0c;安裝不同Python 版本的軟件包及其依賴&#xff0c;并能夠在不同的虛擬環境之間切換 Conda常通過安裝Anaconda/Miniconda來進行使用。一般使用Miniconda就夠了。Miniconda 是…

Android 中解決 Button 按鈕背景色設置無效的問題

1、問題描述 在布局文件中有兩個 Button 按鈕&#xff0c;為每個按鈕設置不同的背景色&#xff0c;但是顯示出來的效果都是紫色的&#xff0c;跟設置的顏色不同&#xff0c;布局文件如下所示&#xff1a;<Buttonandroid:id"id/button_cancel"android:layout_width…

云服務器--阿里云OSS(2)【Springboot使用阿里云OSS】

&#x1f4d2; 阿里云 OSS Spring Boot 異步任務&#xff08;直接存 OSS&#xff09; 1. 項目結構 src/main/java/com/example/demo├── controller│ └── UploadController.java // 接收上傳請求├── service│ ├── AsyncUploadService.java // 異步上傳…