快速回答: 通过 USB 连接已开启 USB 调试的手机,并使用以下命令确认: adb devices,然后运行 adb install path/to/app.apk。若要覆盖现有安装进行更新,请使用 adb install -r path/to/app.apk.
adb install path/to/app.apk
adb install -r path/to/app.apk
最小步骤:
- 安装 SDK 平台工具 并确保
adb已添加到 PATH 中。 - 在手机上启用 开发者选项和 USB 调试.
- 连接 USB,解锁手机,接受 允许 USB 调试.
- 运行
adb devices并确认序列号显示device,而不是unauthorized. - 运行
adb install path/to/app.apk.
如果你从 Capacitor 或 Ionic 发布 Android 构建,这个流程可以让你在硬件上安装最新的 APK,而无需等待 Play Console。测试后的商店发布,请参阅 Google Play 分阶段发布.
目录
- 安装 Platform Tools 并验证 adb
- adb install apk 核心工作流
- adb install 标志
- 使用 -s 指定多台设备
- 通过 Wi-Fi 安装 APK
- 使用 install-multiple 安装拆分 APK
- 安装后启动应用
- 使用 adb 卸载
- Capacitor 示例
- 排查安装错误
安装 Platform Tools 并验证 adb
你不需要下载完整的 Android Studio 来 adb install。你需要 平台工具 由 Google 提供。
- 下载适用于你操作系统的 Platform Tools。
- 解压到一个固定文件夹。
- 将该文件夹添加到 PATH 中。
验证:
adb version
在设备上,按照 Android 开发者选项指南开启 USB 调试。部分厂商定制系统(常见如小米 MIUI)还需要 通过 USB 安装 或开发者设置中的类似选项。
使用数据线。仅充电线会导致 adb devices 列表并浪费时间。
adb install apk 核心工作流
安装前务必检查连接。
adb devices
预期的正常输出:
List of devices attached
XXXXXXXX device
安装:
adb install path/to/your-app.apk
包含空格的路径请加引号。从 APK 目录执行:
adb install app-debug.apk
成功运行时通常会打印 正在执行流式安装 以及 成功。在底层, adb install 将文件推送到 /data/local/tmp,运行 pm install,并删除临时文件。这比手动操作更简单 adb push 加一个 shell pm install 用于日常测试。
关于 ADB 之外的 Capacitor 环境配置,请参阅 Capacitor 应用的 Android 配置.
adb install 标志
| 参数 | 含义 | 使用场景 |
|---|---|---|
-r |
替换现有应用,尽可能保留数据 | 调试重建,包名相同 |
-d |
仅允许在可调试应用上降级 | 将调试构建回滚到更新的调试构建之上 |
-g |
安装时授予所有运行时权限 | 当权限阻止启动时,加快 QA 速度 |
-t |
允许仅限测试的 APK | 来自 CI 的内部 testOnly 构建 |
常见组合:
adb install -r app-debug.apk
adb install -r -g app-debug.apk
adb install -r -d older-build.apk
adb install -r -t internal-test.apk
-r 是迭代开发的默认习惯。如果没有它,Android 通常会返回 INSTALL_FAILED_ALREADY_EXISTS 当包已存在时。
-d 仅当已安装的包可调试时才允许降级。它不会从 Play 降级非可调试的发布版。如果没有 -d,较低的 versionCode 会触发 INSTALL_FAILED_VERSION_DOWNGRADE.
-g 会跳过安装时的权限对话框,但这不代表可以省去在干净安装环境下测试权限流程。
-t 当 manifest 设置了 android:testOnly="true"时是必需的。否则会出现 INSTALL_FAILED_TEST_ONLY.
Release 构建必须使用一致的签名。如果你生成了新的上传密钥, Android keystore 生成器 文档中记录了指纹和 PKCS#12 输出。使用与已安装应用不同的密钥签名会导致 INSTALL_FAILED_UPDATE_INCOMPATIBLE.
使用 -s 指定多个设备
当连接了多个设备或模拟器时, adb install 可能会失败并报错: 检测到多个设备/模拟器。列出序列号:
adb devices
用以下命令指定单个序列号: -s:
adb -s SERIAL install -r app-debug.apk
替换 SERIAL 使用第一列中的值 adb devices.
通过 Wi-Fi 安装 APK
Android 11 及更高版本(无线调试):
将手机和电脑连接到同一 Wi-Fi 网络。
- 在手机上: 设置 → 开发者选项 → 无线调试 → 使用配对码配对设备 code。记下配对 IP、端口和六位 code。
- 在电脑上执行配对:
adb pair IP:PAIRING_PORT
提示时输入配对 code。
- 连接到无线调试屏幕上显示的调试端口:
adb connect IP:DEBUG_PORT
adb devices
- 如果同时出现 USB 和 Wi-Fi 设备,请拔掉 USB 线
adb devices,或明确指定 Wi-Fi 目标:
adb -s IP:DEBUG_PORT install -r app-debug.apk
旧版 Android(优先使用 USB):
adb tcpip 5555
adb connect PHONE_IP:5555
在 adb devices 显示 TCP 端点后拔掉 USB。企业局域网中的防火墙和网络隔离可能会阻止 Wi-Fi ADB。
使用 install-multiple 安装 Split APK
Play Store 应用包会解包为 基础 APK 加上配置拆分 (密度、ABI、语言)以及有时是安装时功能模块。在一条命令中安装基础 APK 和所有匹配目标设备的拆分:
adb install-multiple -r base.apk split_config.xxhdpi.apk split_config.arm64_v8a.apk
仅传递来自同一 bundle 提取且适配已连接设备的拆分。缺失或错误的拆分会导致 INSTALL_FAILED_INVALID_APK 或安装不完整。
要从 .apks 归档中侧载, bundletool install-apks --apks=app.apks 通常比手动列出文件更简单。
这与 ABI 拆分 APK 不同,后者是 Gradle 为每种架构(app-armeabi-v7a-debug.apk, app-arm64-v8a-debug.apk等)构建独立的完整 APK。每个文件都是完整应用。选择与设备 CPU 匹配的那个,然后对 adb install -r 该单个文件执行操作。不要将输出文件夹中的所有 APK 都传给 install-multiple.
安装后启动应用
已知启动器 Activity (来自 AndroidManifest.xml):
adb shell am start -n com.example.app/.MainActivity
快速冒烟测试 如果你只知道包名:
adb shell monkey -p com.example.app -c android.intent.category.LAUNCHER 1
monkey 会触发一次启动 intent。这不是完整的 UI 测试,但可以确认应用安装后能正常打开。
查看日志:
adb logcat
使用 adb 卸载
按包名移除(而非 APK 路径):
adb uninstall com.example.app
这会移除应用及其数据。适用于首次启动测试以及修复签名不匹配之前。
若要移除应用但保留设备上的用户数据:
adb uninstall -k com.example.app
-k 可能导致下次安装复用旧的偏好设置或数据库,因此需要真正干净安装时请跳过。使用 adb install -r 仅当需要在现有安装上进行更快的更新循环时。
Capacitor 示例
典型的 Capacitor 循环:
npx cap sync android
构建调试版 APK,然后:
adb install -r android/app/build/outputs/apk/debug/app-debug.apk
使用您的 上传密钥 在上传到 Play 之前。使用 Play App Signing 时,商店下载使用的是 Google 的 应用签名证书,它可能与你的上传证书不同。只有当 APK 证书与已安装应用匹配且符合常规更新规则时,才能通过 ADB 更新。卸载前请对比签名证书。如果两者不同,请使用内部测试轨道的 APK(与 Play 构建签名方式相同)进行测试,而不是本地上传签名的文件。卸载 Play 构建会删除应用数据。
排查安装错误
| 错误或症状 | 可能原因 | 可尝试的操作 |
|---|---|---|
unauthorized 中的 adb devices |
RSA 提示未被接受 | 解锁手机,批准 USB 调试, adb kill-server 然后 adb start-server |
no devices/emulators found |
数据线、驱动或调试未开启 | 新数据线,启用 USB 调试,必要时安装 Windows Google USB 驱动 |
INSTALL_FAILED_ALREADY_EXISTS |
相同的包,但没有 -r |
adb install -r app.apk 或 adb uninstall 首先 |
INSTALL_FAILED_UPDATE_INCOMPATIBLE |
不同的签名密钥 | 卸载旧应用,或安装使用相同密钥签名的构建版本 |
INSTALL_FAILED_VERSION_DOWNGRADE |
在非可调试应用上降低了 versionCode | 卸载、提升版本号,或使用 -d 仅适用于可调试包 |
INSTALL_FAILED_INSUFFICIENT_STORAGE |
磁盘空间不足 | 释放设备空间,删除未使用的应用 |
INSTALL_FAILED_TEST_ONLY |
testOnly APK | adb install -t app.apk 仅限受信任的测试构建 |
INSTALL_FAILED_INVALID_APK |
损坏或错误的 split 集 | 重新构建 APK,将所有 splits 传递给 install-multiple |
more than one device/emulator |
连接了多个目标设备 | adb -s SERIAL install ... |
设备未授权
adb devices 显示:
XXXXXXXX unauthorized
在手机上修复,而不仅仅是在终端中:
- 重新插入 USB 并关闭锁屏。
- 点击 允许 开启 允许 USB 调试吗?
- 查看 始终允许来自此计算机 用于你的开发机。
- 重启 ADB:
adb kill-server
adb start-server
adb devices
未找到设备/模拟器
- 确认已开启 USB 调试(参见 开发者选项).
- 尝试更换 USB 端口和线缆。
- 在 Windows 上,如果缺少 OEM 驱动,请从 SDK 管理器安装 Google USB 驱动。
- 对于模拟器,请先启动 AVD 再执行
adb install.
安装失败:更新版本不兼容
已安装的应用签名证书与你推送的 APK 不同。常见于混用 debug 和 release、Play App Signing 持有的密钥与上传 APK 的密钥不一致,或密钥轮换之后。
首先确认你安装的 build 与设备上的应用使用相同证书签名。需要匹配生产安装时,请使用 Play 测试轨道的 APK。
如果必须替换安装,卸载会删除应用数据。先备份所需内容,然后:
adb uninstall com.example.app
adb install app.apk
INSTALL_FAILED_VERSION_DOWNGRADE
APK versionCode 版本低于已安装版本。
仅适用于可调试包,用于有意回滚测试:
adb install -r -d older.apk
对于 Play 的 release build,请先卸载或提高 versionCode 而不是使用 -d.
INSTALL_FAILED_INSUFFICIENT_STORAGE
设备无法为包分配空间。请删除应用或媒体文件后重试。低存储测试手机上安装超大 APK 时经常遇到此问题。
INSTALL_FAILED_TEST_ONLY
该 build 被标记为仅限测试。对于你自己的 CI 产物:
adb install -t -r app.apk
请勿使用 -t 以侧载方式安装不受信任的 APK。
对于需要修复 JavaScript、样式和配置,且无需等待商店审核的 Capacitor 团队, Capgo 支持签名 Live Update、渠道管理和回滚,与原生商店发布并行。