# android-tools **Repository Path**: yaboxing/android-tools ## Basic Information - **Project Name**: android-tools - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-09 - **Last Updated**: 2026-06-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Android Tools (adb/adbd) Cross-compile Package 从 Buildroot `android-tools` 包提取的 adb 和 adbd 交叉编译资源,支持一键编译、打包、部署。 ## 目录结构 ``` output/android-tools/ ├── configs/ # Buildroot 配置文件 │ ├── android-tools.mk │ ├── android-tools.hash │ ├── Config.in │ ├── Config.in.host │ └── adbd-auth ├── patches/ # 所有补丁文件 │ ├── 0001-Fix-makefiles-for-out-of-tree-build.patch │ ├── 0002-Fix-adbd-for-non-Ubuntu-systems.patch │ ├── 0003-Fix-build-issue-with-uclibc.patch │ ├── 0004-Fix-build-issue-with-musl.patch │ ├── 0005-Use-pkgconf-to-get-libs-deps.patch │ ├── 0006-fix-big-endian-build.patch │ ├── 0007-include-cdefs-h-when-needed.patch │ ├── 0008-Include-sysmacros.h-to-compile-with-glibc-2.28.patch │ ├── 0009-Fix-makefiles-for-out-of-tree-ext4_utils-build.patch │ ├── 0010-adb-added-patch-for-openssl-1.1.0-compatibility.patch │ ├── 0011-adbd-Support-reboot-loader.patch │ ├── 0012-adbd-Support-Ctrl-C.patch │ ├── 0013-adbd-Support-usb3.0.patch │ ├── 0014-adbd-Fix-adb-forward-issue.patch │ ├── 0015-adbd-usb_linux_client-Compat-with-old-kernel.patch │ ├── 0016-adbd-Support-requiring-login-for-adb-shell.patch │ ├── 0017-adbd-Specify-login-shell-in-standard-way.patch │ ├── 0018-adbd-Support-setting-TCP-port-with-env-ADB_TCP_PORT.patch │ ├── 0019-adbd-Support-rsa-key-authentication.patch │ └── 0020-adbd-Support-setting-adb-shell.patch ├── scripts/ # 编译、打包、部署脚本 │ ├── build.sh │ ├── package.sh │ ├── deploy.sh │ └── adbd-profile.sh ├── config.sh # 编译配置文件 ├── detect-config.sh # 配置生成器 ├── build-sysroot.sh # sysroot 构建脚本 ├── main.sh # 一键操作入口 └── README.md # 本文件 ``` ## 依赖 编译需要以下库: - **zlib** - 压缩支持 - **OpenSSL** (libcrypto) - 加密支持 - **libselinux** (仅 full build) - SELinux 支持 ## 一键操作 ### 主入口脚本 ```bash ./main.sh [command] [options] ``` ### 命令列表 | 命令 | 说明 | |------|------| | `setup` | 构建 sysroot 依赖 (openssl, zlib) | | `build` | 编译 adb 和 adbd | | `package` | 打包二进制文件 | | `deploy` | 部署到目标设备 | | `all` | 执行 setup + build + package + deploy | | `clean` | 清理编译产物 (保留 sysroot) | | `distclean` | 清理所有生成文件 (包括 sysroot) | | `config` | 显示当前配置 | ### 选项 | 选项 | 说明 | |------|------| | `--full` | 使用全量编译模式 (包含 ext4/fastboot/glib/gio) | ### 编译模式对比 | 特性 | Minimal (默认) | Full (--full) | |------|---------------|---------------| | ext4 支持 | ❌ 移除 | ✅ 包含 | | fastboot | ❌ 移除 | ✅ 包含 | | glib/gio | ❌ 移除 | ✅ 包含 | | adb 核心功能 | ✅ 保留 | ✅ 保留 | | 文件同步 | ✅ 保留 | ✅ 保留 | | 依赖库数量 | 少 | 多 | | 适用场景 | 精简嵌入式平台 | 完整功能需求 | ## 配置 ### 修改配置文件 编辑 `config.sh` 设置工具链和路径: ```bash # 交叉编译器前缀 CROSS_PREFIX="aarch64-none-linux-gnu-" # Sysroot 路径 SYSROOT="/path/to/output/sysroot" # 部署目标 TARGET_HOST="192.168.1.100" TARGET_USER="root" TARGET_DIR="/usr/bin" ``` ### 环境变量覆盖 也可以通过环境变量临时覆盖配置: ```bash CROSS_PREFIX=arm-linux-gnueabihf- ./main.sh build ``` ## 编译 ### 默认编译 (精简模式) ```bash ./main.sh build ``` ### 全量编译 ```bash ./main.sh build --full ``` ### 单独编译 ```bash # 只编译 adb ./scripts/build.sh adb # 只编译 adbd ./scripts/build.sh adbd # 编译所有 ./scripts/build.sh all ``` ### 清理编译产物 ```bash # 清理编译产物 (保留 sysroot) ./main.sh clean # 彻底清理所有生成文件 ./main.sh distclean ``` ## 打包 ### 创建 tar.gz 包 ```bash ./main.sh package # 或 ./scripts/package.sh tarball [adb|adbd|all] ``` ### 创建 Debian 包 ```bash ./scripts/package.sh deb [adb|adbd|all] ``` ### 创建 RPM 包 ```bash ./scripts/package.sh rpm [adb|adbd|all] ``` ### 打包输出 打包后的文件位于 `package/` 目录: ``` package/ ├── adb-aarch64.tar.gz ├── adbd-aarch64.tar.gz └── android-tools-aarch64.tar.gz ``` ## 部署 ### 部署到远程设备 确保已在 `config.sh` 中设置好目标主机: ```bash # 一键部署 ./main.sh deploy # 或使用命令行指定 ./scripts/deploy.sh scp root@192.168.1.100 -d /usr/bin ``` ### 部署方式 | 方式 | 命令 | |------|------| | SCP | `./scripts/deploy.sh scp root@host -d /usr/bin` | | SSH | `./scripts/deploy.sh ssh root@host -k ~/.ssh/id_rsa -d /usr/bin` | | 本地复制 | `./scripts/deploy.sh local /mnt/sdcard/usr/bin` | | ADB | `./scripts/deploy.sh adb` | ### 部署选项 | 选项 | 说明 | |------|------| | -u, --user | 目标用户 (默认: root) | | -p, --port | 目标端口 (默认: 22) | | -k, --key | SSH 私钥文件 | | -d, --dir | 目标目录 | | -t, --type | 二进制类型: adb, adbd, all | ## ADBD 配置 ### 启动方式 #### USB 模式 ```bash adbd & ``` #### TCP 模式 ```bash # 设置环境变量 export ADB_TCP_PORT=5555 adbd & # 或直接指定端口 adbd -a -P 5555 ``` ### 环境变量配置 | 环境变量 | 说明 | 默认值 | |----------|------|--------| | ADB_TCP_PORT | ADB TCP 监听端口 | 5555 | | ADBD_SHELL | 使用的 shell | /bin/sh | | ADBD_RSA_KEY_FILE | RSA 密钥文件路径 | /etc/adbkey.pub | ### 持久化配置 在目标设备上创建 `/etc/profile.d/adbd.sh`: ```bash export ADB_TCP_PORT=5555 export ADBD_SHELL=/bin/bash export ADBD_RSA_KEY_FILE=/etc/adbkey.pub ``` ## 快速开始 ### 精简模式 (推荐) ```bash # 1. 修改配置 vim config.sh # 2. 一键完成所有操作 ./main.sh all ``` ### 全量模式 ```bash # 使用全量编译 ./main.sh all --full ``` ### 分步操作 ```bash # 1. 构建依赖 ./main.sh setup # 2. 编译 ./main.sh build # 3. 打包 ./main.sh package # 4. 部署 ./main.sh deploy ``` ## 连接设备 ### 通过网络连接 ```bash # 连接设备 adb connect 192.168.1.100:5555 # 查看已连接设备 adb devices # 进入 shell adb shell ``` ### 通过 USB 连接 ```bash # 确保设备已连接 adb usb # 查看设备 adb devices # 进入 shell adb shell ``` ## 注意事项 1. **工具链配置**: 在编译前请确保 `CROSS_PREFIX` 设置正确 2. **网络连接**: 确保设备的 5555 端口未被防火墙阻止 3. **权限**: adbd 需要以 root 权限运行才能绑定低于 1024 的端口 4. **防火墙**: 主机和设备需在同一网络或路由可达 ## 故障排除 ### 编译失败 检查工具链是否正确安装: ```bash ${CROSS_PREFIX}gcc --version ``` ### 连接失败 确保设备已启动 adbd 并监听正确端口: ```bash # 在设备上检查 netstat -tlnp | grep 5555 # 或 ss -tlnp | grep adbd ```