Linux环境下编译ADB工具详解
在Android开发与设备调试过程中,ADB(Android Debug Bridge)是不可或缺的命令行工具,它允许用户与Android设备进行通信,如安装应用、调试日志、文件传输等,虽然Google官方提供了预编译的ADB二进制文件,但有时开发者需要根据特定需求(如定制化功能、适配新系统版本或解决兼容性问题)自行编译ADB,本文将详细介绍在Linux环境下编译ADB的完整流程,包括环境准备、源码获取、依赖安装、编译步骤及常见问题解决。

环境准备
在开始编译ADB之前,需确保Linux系统满足基本环境要求,推荐使用Ubuntu 18.04或更高版本,其他基于Debian的发行版也可参考,更新系统软件包列表并安装必要的构建工具:
sudo apt update sudo apt install -y openjdk-8-jdk git flex bison gperf libesd0-dev libwxgtk3.0-gtk3-dev libncurses5-dev libncursesw5-dev libreadline-dev libgl1-mesa-dev libgl1-mesa-glx libx11-dev liblz4-tool libssl-dev libxt-dev libasound2-dev libwxgtk3.0-gtk3-dev build-essential zip curl libxrandr-dev libedify0-dev libpng-dev
上述命令安装了Java开发工具包(JDK)、版本控制工具(Git)、词法分析器(Flex)、语法分析器(Bison)等编译所需的依赖库,确保Java版本为1.8或更高,可通过java -version验证。
获取Android源码
ADB是Android开源项目(AOSP)的一部分,因此需要通过repo工具获取完整的Android源码,首先安装repo工具:
mkdir ~/bin curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo chmod a+x ~/bin/repo export PATH=~/bin:$PATH
创建AOSP工作目录并初始化仓库,由于完整源码体积庞大(约100GB),建议通过-b参数指定分支,例如编译最新稳定版可使用android-13.0.0_r3分支:
mkdir aosp cd aosp repo init -u https://android.googlesource.com/platform/manifest -b android-13.0.0_r3 repo sync -j4
repo sync命令会同步所有子模块,首次执行可能需要数小时,具体时间取决于网络速度。
编译ADB
源码同步完成后,即可开始编译ADB,AOSP使用Soong构建系统,推荐通过make命令直接编译ADB:

source build/envsetup.sh choosecombo 1 aosp_arm64 aosp make adb -j$(nproc)
source build/envsetup.sh加载构建环境配置,choosecombo选择目标设备类型(此处以ARM64架构为例),make adb指定仅编译ADB模块,-j$(nproc)利用所有CPU核心加速编译,编译成功后,可执行文件位于out/host/linux-x86/bin/adb。
验证与安装
编译完成后,需验证ADB功能是否正常,将编译生成的ADB文件复制到系统PATH路径(如/usr/local/bin):
sudo cp out/host/linux-x86/bin/adb /usr/local/bin/
连接Android设备并开启USB调试模式,执行以下命令检查设备识别情况:
adb devices
若输出设备列表,说明编译成功,若出现“command not found”错误,可尝试重新加载环境变量或检查PATH配置。
常见问题与解决方案
-
编译失败提示“缺少依赖库”
部分依赖库可能未完全安装,可通过apt搜索并手动安装缺失的包,sudo apt search libssl-dev sudo apt install libssl1.1-dev
-
Java版本不兼容
AOSP要求Java 8或更高版本,若系统默认为Java 11,可通过update-alternatives切换:
sudo update-alternatives --config java
-
repo sync中断或超时
可通过repo sync -c -j4 --force-sync强制同步并减少同步深度(-c),或分步同步关键模块:repo sync platform/system/core platform/system/extras
-
ADB无法识别设备
检查设备USB调试权限是否开启,或尝试adb kill-server后重新连接,Linux系统可能需配置udev规则,创建/etc/udev/rules.d/51-android.rules并添加:SUBSYSTEM=="usb", ATTR{idVendor}=="12d1", MODE="0666"然后执行
sudo udevadm control --reload-rules && sudo udevadm trigger。
在Linux环境下编译ADB需要耐心细致的环境配置与源码管理,但通过上述步骤,开发者可灵活定制ADB工具以满足特定需求,掌握编译过程不仅有助于深入理解Android调试工具的底层原理,还能在官方版本滞后时快速适配新功能,对于需要频繁进行Android开发或系统调试的用户,自行编译ADB是提升工作效率的重要技能。




















