如何通过ADB/CLI批量安装Android APKM文件?
解决方案
一、正确传递APK列表给adb install-multiple
你尝试的第一个命令在多数shell环境(Linux/macOS的bash/zsh、Windows PowerShell)下是可行的,但如果遇到文件名含空格或shell未正确通配展开的情况,可按以下方式处理:
Linux/macOS 环境
- 无特殊字符的文件名:
adb -s localhost:5555 install-multiple --user 0 *.apk - 含空格/特殊字符的文件名:
find . -maxdepth 1 -type f -name "*.apk" -print0 | xargs -0 adb -s localhost:5555 install-multiple --user 0
Windows 环境
- CMD 命令行:
adb -s localhost:5555 install-multiple --user 0 *.apk - PowerShell:
adb -s localhost:5555 install-multiple --user 0 (Get-ChildItem *.apk).FullName
注意:你用ls *.apk | adb ...的方式无效,因为adb install-multiple接收的是命令行参数而非标准输入,管道传递的内容无法被识别为安装文件。
二、直接通过CLI安装APKM文件
ADB本身不支持直接识别.apkm后缀的文件,也无法直接安装这类Split APK压缩包,但可以通过以下两种方式实现批量安装:
方式1:使用官方工具bundletool
bundletool是Google官方的Android App Bundle处理工具,支持直接安装APKM格式文件:
- 确保本地已安装Java环境(bundletool依赖Java)
- 执行以下命令安装单个APKM:
bundletool install-apks --apks=app.apkm --device-id=localhost:5555 - 批量安装当前目录所有APKM:
for apkm in *.apkm; do bundletool install-apks --apks="$apkm" --device-id=localhost:5555 done
方式2:自动解压+安装脚本
如果不想额外安装工具,可通过脚本自动临时解压APKM、安装后清理文件:
Linux/macOS 脚本:
for apkm_file in *.apkm; do # 创建临时目录 temp_dir=$(mktemp -d) # 解压APKM到临时目录 unzip "$apkm_file" -d "$temp_dir" # 安装所有解压出的APK adb -s localhost:5555 install-multiple --user 0 "$temp_dir"/*.apk # 删除临时目录 rm -rf "$temp_dir" done
Windows PowerShell 脚本:
foreach ($apkmFile in Get-ChildItem *.apkm) { $tempDir = New-TemporaryFile | Remove-Item -Force | New-Item -ItemType Directory Expand-Archive -Path $apkmFile.FullName -DestinationPath $tempDir.FullName adb -s localhost:5555 install-multiple --user 0 (Get-ChildItem $tempDir.FullName *.apk).FullName Remove-Item $tempDir.FullName -Recurse -Force }
内容的提问来源于stack exchange,提问作者P1000
相关产品推荐
相关产品推荐

