获取 Android 设备上当前运行的应用的 apk
来源:互联网 发布:java如何调用存储过程 编辑:程序博客网 时间:2024/05/16 04:50
有时候在给开发提缺陷时(三方应用兼容性)需要附上第三方应用的apk,或者出于需要,需取得设备上某个应用的apk文件,如果是直接从PC端安装的话,获取apk很方便,如果是从设备上安装的且安装包删除了的话,若需获取,则需要从data/app目录或者system/app目录下获取。但在该目录下的apk名与应用名称是不同的,很多时候难以找到正确对应的apk,因此可以按以下步骤获取(以windows为例):
1.在设备上打开一个android应用,运行adb shell dumpsys window w | findstr \/ | findstr name=,运行后会获取到当前应用的包名
2.接着运行adb shell pm list package -f packageName,运行后会获取到对应的apk文件路径
3.使用adb pull命令即可将apk复制到本地
1.在设备上打开一个android应用,运行adb shell dumpsys window w | findstr \/ | findstr name=,运行后会获取到当前应用的包名
2.接着运行adb shell pm list package -f packageName,运行后会获取到对应的apk文件路径
3.使用adb pull命令即可将apk复制到本地
接下来用python脚本实现下:
#!/usr/bin/python#coding=utf-8import osimport reimport platform#打开手机上的应用,运行脚本,会将该应用对应的apk复制到本地的Apps文件夹下PATH = lambda p: os.path.abspath(p)system = platform.system()if system is "Windows": find_util = "findstr"else: find_util = "grep"def get_current_package_name(): pattern = re.compile(r"[a-zA-Z0-9\.]+/.[a-zA-Z0-9\.]+") os.popen("adb wait-for-device") out = os.popen("adb shell dumpsys window w | %s \/ | %s name=" %(find_util, find_util)).read() package_name = pattern.findall(out)[0].split("/")[0] return package_namedef get_match_apk(package_name, path): list = [] for packages in os.popen("adb shell pm list packages -f %s" %package_name).readlines(): list.append(packages.split(":")[-1].split("=")[0]) apk_name = list[0].split("/")[-1] os.popen("adb pull %s %s" %(list[0], path))if __name__ == "__main__": path = PATH(os.getcwd() + "/Apps") if not os.path.isdir(PATH(os.getcwd() + "/Apps")): os.makedirs(path) get_match_apk(get_current_package_name(), path)
0 1
- 获取 Android 设备上当前运行的应用的 apk
- 获取 Android 设备上当前运行的应用的 apk
- 获取 Android 设备上当前运行的应用的 apk
- AE开发----获取地图上当前选中的要…
- AE开发----获取地图上当前选中的要素
- 找出计算机上当前登录入网的用户
- ListView读取屏幕上当前可见Item的索引
- android 5.0 获取最近运行的应用
- [.bat][保存以防后面有用哦]获取APK签名信息 , 获取 Android 应用的 Apk 签名
- 获取android应用或apk的md5指纹方法
- 如何获取设备上运行的android版本信息
- android获取当前设备运行app的进程
- 上当的基本原理
- 上当的鱼
- android 获取设备上安装的非系统应用信息
- android获取设备中所有应用的包名
- 卸载Android的apk应用
- 实现adb install替换Android应用的apk后应用自动运行
- Java动态规划 实现最长公共子序列以及最长公共子字符串
- apache安全配置
- Android 沉浸式全屏
- Powers of Ten – Part II
- Yii Framework中截取字符串(UTF-8)的源码
- 获取 Android 设备上当前运行的应用的 apk
- 关于MFC CEdit中仅输入数字时,如何使其不能输入以0开头的非0整数
- [数位dp] hdu 3652 B-number
- 将sharepoint 2013 网站集由基于路径命名转换到基于主机命名
- 在eclipse中集成java反编译工具
- java反序列化时的类加载
- 一种较为严谨的编程风格
- AngularJS入门(二)
- 12 屏幕绘图基础