使用python编写脚本获取手机当前应用apk的信息


Posted in Python onJuly 21, 2014

前提是已设置ANDROID_HOME环境变量,使用aapt工具获取apk的信息,保存至脚本所在目录下的PackageInfo.txt文件中:

import os 
import tempfile 
import re 

tempFile = tempfile.gettempdir() 

def get_aapt(): 
if "ANDROID_HOME" in os.environ: 
rootDir = os.path.join(os.environ["ANDROID_HOME"], "build-tools") 
for path, subdir, files in os.walk(rootDir): 
if "aapt.exe" in files: 
return os.path.join(path, "aapt.exe") 
else: 
return "ANDROID_HOME not exist" 

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 input | findstr FocusedApplication").read() 
package_name = pattern.findall(out)[0].split("/")[0] 

return package_name 

def get_match_apk(package_name): 
list = [] 
for packages in os.popen("adb shell pm list packages -f " + package_name).readlines(): 
list.append(packages.split(":")[-1].split("=")[0]) 
apk_name = list[0].split("/")[-1] 
os.popen("adb pull " + list[0] + " " + tempFile) 

return tempFile + "\\" + apk_name 

if __name__ == "__main__": 
os.popen(get_aapt() + \ 
" dump badging " + \ 
get_match_apk(get_current_package_name()) + \ 
" > PackageInfo.txt") 
os.popen("del " + tempFile + "\\*.apk")
Python 相关文章推荐
Python os模块介绍
Nov 30 Python
Python CSV模块使用实例
Apr 09 Python
python中lambda与def用法对比实例分析
Apr 30 Python
Python实现的插入排序算法原理与用法实例分析
Nov 22 Python
机器学习的框架偏向于Python的13个原因
Dec 07 Python
python用fsolve、leastsq对非线性方程组求解
Dec 15 Python
python的pytest框架之命令行参数详解(下)
Jun 27 Python
python实现四人制扑克牌游戏
Apr 22 Python
不到20行实现Python代码即可制作精美证件照
Apr 24 Python
python中如何打包用户自定义模块
Sep 23 Python
python字符串常规操作大全
May 02 Python
如何理解及使用Python闭包
Jun 01 Python
使用python编写android截屏脚本双击运行即可
Jul 21 #Python
python 示例分享---逻辑推理编程解决八皇后
Jul 20 #Python
python中from module import * 的一个坑
Jul 20 #Python
用python代码做configure文件
Jul 20 #Python
python中的内置函数getattr()介绍及示例
Jul 20 #Python
Python实现的生成自我描述脚本分享(很有意思的程序)
Jul 18 #Python
Python中使用 Selenium 实现网页截图实例
Jul 18 #Python
You might like
PHP 多进程 解决难题
2009/06/22 PHP
解析thinkphp中的M()与D()方法的区别
2013/06/22 PHP
php中的动态调用实例分析
2015/01/07 PHP
如何写php守护进程(Daemon)
2015/12/30 PHP
phpcms的分类名称和类别名称的调用
2017/01/05 PHP
PHP延迟静态绑定使用方法实例解析
2020/09/05 PHP
javascript DOM编程实例(智播客学习)
2009/11/23 Javascript
flash调用js中的方法,让js传递变量给flash的办法及思路
2013/08/07 Javascript
IE与FireFox的JavaScript兼容问题解决办法
2013/12/31 Javascript
js类式继承的具体实现方法
2013/12/31 Javascript
JS OffsetParent属性深入解析
2014/01/13 Javascript
JavaScript用JQuery呼叫Server端方法示例代码
2014/09/03 Javascript
JS实现淘宝支付宝网站的控制台菜单效果
2015/09/28 Javascript
详解Backbone.js框架中的模型Model与其集合collection
2016/05/05 Javascript
jquery自定义插件开发之window的实现过程
2016/05/06 Javascript
JS转换HTML转义符的方法
2016/08/24 Javascript
Angular.js实现多个checkbox只能选择一个的方法示例
2017/02/24 Javascript
走进javascript——不起眼的基础,值和分号
2017/02/24 Javascript
浅入深出Vue之组件使用
2019/07/11 Javascript
vue微信分享插件使用方法详解
2020/02/18 Javascript
js实现点赞效果
2020/03/16 Javascript
webpack 动态批量加载文件的实现方法
2020/03/19 Javascript
Python 文件操作实现代码
2009/10/07 Python
Python EOL while scanning string literal问题解决方法
2020/09/18 Python
Python实现的快速排序算法详解
2017/08/01 Python
torch 中各种图像格式转换的实现方法
2019/12/26 Python
详解python百行有效代码实现汉诺塔小游戏(简约版)
2020/10/30 Python
院药学专业个人求职信
2013/09/21 职场文书
机械设计及其自动化专业推荐信
2013/10/31 职场文书
什么样的创业计划书可行性高?
2014/02/01 职场文书
幼儿园消防演练方案
2014/02/13 职场文书
成语的广告词
2014/03/19 职场文书
Python深度学习之Pytorch初步使用
2021/05/20 Python
Python机器学习之底层实现KNN
2021/06/20 Python
一篇文章带你复习java知识点
2021/06/28 Java/Android
MySQL远程无法连接的一些常见原因总结
2022/09/23 MySQL