Android系统中如何获取已安装应用图标?含存储路径与adb方法咨询
关于Android已安装APK图标存储与ADB相关问题的解答
APK图标的存储位置
- 系统应用图标:嵌入在
/system/app/或/system/priv-app/目录下的对应APK包内,具体位于APK中的res/drawable-xxx/或mipmap-xxx/子目录(xxx代表分辨率标识,如hdpi、xhdpi) - 用户第三方应用图标:同样嵌入在APK包内,APK文件默认存储在
/data/app/目录下(Android 8.0及以上版本路径可能为/data/app/~~[随机字符串]/),图标资源在APK的res/drawable-xxx/或mipmap-xxx/目录中 - 注意:Android系统不会将应用图标单独提取到独立文件夹,而是直接读取APK包内的资源文件
通过ADB获取已安装APK的图标
可以通过以下几种方式实现:
- 先获取目标应用包名:
adb shell pm list packages | grep [应用关键词] - 导出APK到本地后提取图标:
- 执行
adb shell pm path [包名]获取APK的绝对路径 - 用
adb pull [APK路径] 本地保存路径将APK导出到电脑 - 用解压工具打开APK,直接提取
res/drawable-xxx/或mipmap-xxx/下的图标文件(通常命名为ic_launcher开头的png/webp格式文件)
- 执行
- 直接通过ADB命令提取图标到SD卡(需应用具备存储权限):
# 指定分辨率提取图标,480对应xhdpi,可替换为160(mdpi)、240(hdpi)、640(xxhdpi)等 adb shell am broadcast -a com.android.launcher3.action.GET_ICON --es package [包名] --ei density 480 # 将提取的图标拉到本地 adb pull /sdcard/Android/data/com.android.launcher3/files/icons/[包名].png 本地路径
ADB读取应用目录权限不足的解决方法
权限不足多因Android 10+的存储权限限制、目标应用为系统应用或采用私有目录导致,可尝试以下方案:
- 针对debug签名的应用:使用
adb shell run-as [包名]命令进入应用私有目录,即可读取内部文件 - 授予存储权限:执行
adb shell pm grant [包名] android.permission.READ_EXTERNAL_STORAGE,部分场景需额外授予WRITE_EXTERNAL_STORAGE权限 - Android 11+ Scoped Storage适配:执行
adb shell appops set [包名] MANAGE_EXTERNAL_STORAGE allow获取全局存储访问权限 - 访问系统应用目录:需先root设备,再执行
adb root和adb remount命令挂载系统分区为可读写状态,之后即可访问/system/app/等系统目录
内容的提问来源于stack exchange,提问作者Balu Gour
相关产品推荐
相关产品推荐

