adb 命令导出apk
【摘要】 在 Android 调试中,可以使用 adb 命令导出设备上已安装应用的 APK 文件。以下是详细步骤和常见用法: 方法 1:通过 pm path 获取 APK 路径并拉取 步骤 1:查找应用的包名adb shell pm list packages | grep "关键词"示例(查找微信包名):adb shell pm list packages | grep "wechat"输出:pac...
在 Android 调试中,可以使用 adb
命令导出设备上已安装应用的 APK 文件。以下是详细步骤和常见用法:
方法 1:通过 pm path
获取 APK 路径并拉取
步骤 1:查找应用的包名
adb shell pm list packages | grep "关键词"
- 示例(查找微信包名):
输出:adb shell pm list packages | grep "wechat"
package:com.tencent.mm
步骤 2:获取 APK 安装路径
adb shell pm path <包名>
- 示例:
输出:adb shell pm path com.tencent.mm
package:/data/app/com.tencent.mm-XXXXXXXX/base.apk
步骤 3:拉取 APK 到本地
adb pull <设备上的APK路径> <本地保存路径>
- 示例:
adb pull /data/app/com.tencent.mm-XXXXXXXX/base.apk ./wechat.apk
方法 2:直接通过 adb pull
导出(适用于系统应用)
系统应用通常安装在 /system/app/
或 /system/priv-app/
目录下,可直接拉取:
adb pull /system/app/<应用名>/<应用名>.apk ./local.apk
- 示例(导出系统计算器):
adb pull /system/app/Calculator/Calculator.apk ./calculator.apk
方法 3:使用 adb shell
+ cat
导出(适用于无权限路径)
如果 adb pull
报错(如 Permission denied
),可通过 cat
重定向到本地:
adb shell cat <设备上的APK路径> > ./local.apk
- 示例:
adb shell cat /data/app/com.tencent.mm-XXXXXXXX/base.apk > ./wechat.apk
- 注意:此方法在 Windows 上需使用
adb exec-out
替代adb shell cat
:adb exec-out cat /data/app/com.tencent.mm-XXXXXXXX/base.apk > wechat.apk
方法 4:批量导出所有应用(需 root)
如果设备已 root,可以批量导出所有 APK:
adb shell
su
cd /data/app
for apk in $(find . -name "*.apk"); do
adb pull /data/app/$apk ./${apk//\//_}
done
常见问题
-
Permission denied
错误- 原因:
/data/app/
下的 APK 需要 root 权限访问。 - 解决方案:
- 使用
adb exec-out
(无需 root):adb exec-out cat /data/app/com.example.app/base.apk > app.apk
- 或通过
adb root
重启 adb 为 root 模式(需设备支持)。
- 使用
- 原因:
-
导出的 APK 无法安装
- 可能是拆分 APK(Split APK),需导出所有分包(如
base.apk
+config.xxhdpi.apk
)。 - 使用
adb shell pm list packages -f
查看完整路径。
- 可能是拆分 APK(Split APK),需导出所有分包(如
-
查找系统应用路径
- 系统应用通常位于:
/system/app/
(普通系统应用)/system/priv-app/
(特权应用)/vendor/app/
(厂商定制应用)
- 系统应用通常位于:
完整示例
导出微信 APK
# 1. 查找包名
adb shell pm list packages | grep "wechat"
# 输出: package:com.tencent.mm
# 2. 获取 APK 路径
adb shell pm path com.tencent.mm
# 输出: package:/data/app/com.tencent.mm-XXXXXXXX/base.apk
# 3. 拉取 APK(方法1)
adb pull /data/app/com.tencent.mm-XXXXXXXX/base.apk ./wechat.apk
# 若失败,改用方法3(无需 root)
adb exec-out cat /data/app/com.tencent.mm-XXXXXXXX/base.apk > wechat.apk
通过以上方法,你可以轻松导出设备上的 APK 文件。如果需要导出 数据+APK(如备份应用),可以结合 adb backup
命令(需应用允许备份)。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)