批量解析apk的AndroidManifest.xml获得Pagename(Python)
来源:互联网 发布:ubuntu网页加载慢 编辑:程序博客网 时间:2024/06/05 06:54
今天工作的时候需要在Sdklancher中将待安装的APP的Pagename显示出来.批量在N多个APP的apk文件中去找Pagename太麻烦了,就用python写了一个批量脚本,虽然很烂但也勉强能使用.
# Author by Acidsweet# Version 0.01# Require OS:*unix# How To Use It# Use "python <self.name>.py <the-dir-where-your-apks-in>"# Tips:Remenber to put the AXMLPrinter2.jar and <self.name>.py in the same dir# Remenber to install the java and make sure it in the PATH# <the-dir-where-your-apks-in> must end with '/'# The result will in the result.txt which in <the-dir-where-your-apks-in>import os,sysfrom xml.dom import minidomdef unPack(pathdir,packname):apkfile=pathdir+packname+'.apk'filename=pathdir+packnameos.system('unzip '+apkfile+' -d '+filename)#-----------------------------------------------------------------------def getTarget(pathdir):xmldoc=minidom.parse(pathdir+'XML.xml')activitylist=xmldoc.getElementsByTagName('activity')Activity=getActivity(activitylist)return Activity.attributes['android:name'].value#-----------------------------------------------------------------------def getActivity(lst):inTern=u'android.intent.action.MAIN'for j in lst:actionlist=j.getElementsByTagName('action')for i in actionlist:if i.attributes['android:name'].value==inTern:return jreturn None#-----------------------------------------------------------------------def getPageName(pathdir):os.system('java -jar AXMLPrinter2.jar '+pathdir+'AndroidManifest.xml > '+pathdir+'XML.xml')#Binary.xml to Origin.xmlreturn getTarget(pathdir)#-----------------------------------------------------------------------def begin():pathdir=sys.argv[1]lst=os.listdir(pathdir)results={}packname=''for i in lst:packname=os.path.splitext(i)[0]suffix=os.path.splitext(i)[1]if suffix=='.apk':unPack(pathdir,packname)pagename=getPageName(pathdir+packname+'/')results[packname]=pagenamepackname=''#os.system('rm -rf '+pathdir+packname+'/')if os.path.exists(pathdir+'result.txt'):os.system('rm '+pathdir+'result.txt')targetfile=open(pathdir+'result.txt','a')for k in results.keys():targetfile.write(k+':'+results[k]+'\n')targetfile.close()#-----------------------------------------------------------------------if __name__=="__main__":begin()
这个版本还有很多问题,也无鲁棒性,聊胜于无吧.
这个脚本需要使用"AXMLPrinter2.jar",大家自行下载吧,网上很容易下载到,放到.py文件同文件夹下即可
- 批量解析apk的AndroidManifest.xml获得Pagename(Python)
- Java解析 APK AndroidManifest.xml
- AndroidManifest.xml的解析
- 使用AXMLParser解析apk中的AndroidManifest.xml
- PHP 解析 APK 中的 AndroidManifest.xml
- Apk解析之 —— AndroidManifest.xml
- python解析AndroidManifest.xml文件
- Apk AndroidManifest.xml收集
- Android apk AndroidManifest.xml 解密
- AndroidManifest.xml解析
- AndroidManifest.xml 文件解析
- AndroidManifest.xml解析
- AndroidManifest.xml简单解析
- AndroidManifest.xml解析
- AndroidManifest.xml解析
- AndroidManifest.xml解析
- AndroidManifest.xml文件解析
- AndroidManifest.xml 解析
- 关于重载和重写、多态问题
- 得到android所有已经安装的应用程序的uid代码
- 基于Django快速开发Web 应用
- intel hadoop manager安装配置
- LeetCode: Container With Most Water
- 批量解析apk的AndroidManifest.xml获得Pagename(Python)
- 做报表心得
- 得到android多有的正在运行的程序信息
- 《Warcraft是怎样炼成的(三)》:从Demo到游戏
- 同事wxz的建议
- ORACLE 11g出现TNS: 协议适配器错误解决方法
- [Oracle] 函数用法集合
- [Cocoa]深入浅出 Cocoa 之 Core Data(1)- 框架详解
- “小智特惠” Android版已经登录各大电子市场,欢迎试用