ADB源碼分析(一)

來源:互聯網
上載者:User

ADB是android debug bridge的縮寫,負責電腦與Android裝置的幾乎所有通訊和協作,可以認為是串連兩者的橋樑。

在Android開發和惡意程式碼分析中,經常用到它的install、uninstall、push、pull、logcat、shell等命令。它的用法可以參考SDK的文檔:

http://developer.android.com/guide/developing/tools/adb.html

正因為其獨特的橋樑作用,有必要詳細瞭解其工作過程。幸運的是,我們可以獲得其源碼,它位於Android源碼樹的platform/system/core/adb/目錄下,可以通過下面的git命令下載:

git clone git://android.git.kernel.org/platform/system/core.git

如果要編譯,還是推薦下載完整的Android源碼,並參考上一篇文章所述編譯方法。

ADB由兩個物理檔案組成:

  1. adb或adb.exe,運行於PC端,包括Linux、Windows、Mac OS等系統之中,通常是x86架構上(下文中,ADB指整個模組,而adb單獨指這一部分);
  2. adbd,運行於Android裝置的底層Linux之中,ARMv5架構上。

為了保持兩者代碼一致,Google並未將其做源碼檔案層級的分離,而是統一為一份代碼,通過傳入Android.mk的$(BUILD_SIMULATOR)變數是否為真,來構建不同的檔案。對源碼而言,由ADB_HOST宏是否預定義為真來區分。

而adb本身還需要估計多個作業系統平台,這由傳入Android.mk的$(HOST_OS)來控制,它的有效取值包括linux、darwin、freebsd和windows。不同平台的主要差異是USB的控制方法和檔案路徑。

除了物理檔案上的區別,adb本身還會在PC中產生兩類不同的進程。

其中一個進程將由命令列“adb fork-server server”產生(給使用者的調用介面是adb start-server),這個守護進程長期運行於後台,沒有控制台介面,稱之為adb server(adb服務端),其主要工作有兩部分:

  1. 管理PC中的Android模擬器,以及通過USB線串連到PC的Android裝置,負責維持運行於其中的adbd進程與自身的資料通道;
  2. 實現PC與裝置/模擬器之間的資料拷貝。

adb的另一類進程是提供給使用者的命令列工具,對使用者暴露了上述install、push、shell等介面,與使用者互動,稱之為adb client(adb用戶端)。其主要工作是解析這些命令的參數,做必要預先處理,然後轉移為指令或資料,發送給adb服務端。adb服務端再將指令資料轉寄到模擬器或裝置中,由adbd處理,產生結果,再通過adb服務端接收回來。

事實上,當adb用戶端運行時,會自動檢查當前系統中是否存在adb服務端,如果不存在,則通過“adb fork-server server”啟動一個服務端,然後再與之建立串連。這樣,使用者就不需要關心這些概念和差異了。

因此,從運行實體上看,ADB由三部分構成:

  1. adbd
  2. adb server
  3. adb client

Google還引入了一個adb service(adb服務,注意與adb服務端的區別)的概念,指adbd提供的功能。這就構成了ADB的四個模組。在源碼的OVERVIEW.txt檔案中對它們的關係進行了描述。而protocol.txt描述了各模組之間通訊協作的協議格式。

http://blog.claudxiao.net/2011/05/adb_analysis_part1/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.