获取APP应用的包名信息
语言: python 3.7
需求:获取APP的包名和程序入口信息,以便在 Appium 脚本中配置 appPackage 和 appActivity 参数。
场景一
资源:已有APP应用的apk安装包, appt 工具
方法:通过appt指令获取。
脚本:
def get_by_apk(path):
# 前提:(1)aapt工具已经配置了环境变量(2)拥有app的安装包apk文件
# 入参:安卓应用的apk安装包完整路径,返回app的包名和应用入口。 logging.basicConfig(level=logging.INFO, format='[%(levelname)s] %(message)s') command_package = r'aapt dump badging {} | findstr "package"'.format(path)
command_activity = r'aapt dump badging {} | findstr "launchable-activity"'.format(path) result_package = os.popen(command_package).read()
result_activity = os.popen(command_activity).read() app_package = result_package.split(' ')[1].split('=')[1].replace('\'', '')
app_activity = result_activity.split(' ')[1].split('=')[1].replace('\'', '') logging.info('appPackage: '+app_package)
logging.info('appActivity: '+app_activity) app_info_dict = {'appPackage': app_package, 'appActivity': app_activity}
return app_info_dict
场景二
资源:app已成功安装,但无应用安装包。
方法:将设备连接PC并开启USB调试,保证设备连接成功。然后启动目标APP,保证在前台展示,执行 adb shell 指令获取。
指令: adb shell dumpsys activity
脚本:
def get_by_adb_shell():
# 前提:(1)设备已成功以debug模式连接PC,打开目标应用,并保持app界面置顶。 logging.basicConfig(level=logging.INFO, format='[%(levelname)s] %(message)s') command_adb_shell = 'adb shell dumpsys activity'
result = os.popen(command_adb_shell).read() # 缩小查找的结果范围
start = result.find('ACTIVITY MANAGER ACTIVITIES')
end = result.find('ACTIVITY MANAGER RUNNING PROCESSES')
target = result[start:end].split('\n') # 过滤结果
activity_list = []
for i in target:
if i.find('android.intent.category.LAUNCHER') != -1:
cmp = i.split(' ')
for j in cmp:
if j.find('cmp=') != -1:
activity_list.append(j) # (如果后台启动多个app,结果列表的个数会大于1,排列顺序是activities from top to bottom)
# 获取的初始结果的大致样式:
'''
Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER]
flg=0x10200000 cmp=com.***.***/.ui.activity.***.WelcomeActivity (has extras) }
''' # 格式化结果
app_package = activity_list[0].replace('cmp=', '').split('/')[0]
app_activity = activity_list[0].replace('cmp=', '').split('/')[1]
logging.info('appPackage: '+app_package)
logging.info('appActivity: '+app_activity) app_info_dict = {'appPackage': app_package, 'appActivity': app_activity}
return app_info_dict
------ END
获取APP应用的包名信息的更多相关文章
- 获取app应用的包名
1.获取哪个app包名,就打开哪个app 2.在dos窗口下输入: adb shell "dumpsys window | grep mCurrentFocus" 获取包名
- appium 获取app的应用包名package和activity
第一种,使用sdk自带的工具aapt,在sdk\builds-tools\目录下,切换到aapt所在目录 命令:aapt dump badging app的路径,运行后的结果中以下两行分别是应用包名p ...
- 获取App的PackageName包名和LauncherActivity启动页
第一种情况: 查看手机里面已经安装的App: 用数据线连接手机, 打开开发者模式, 并赋予相关权限: 1. 清除日志: adb logcat -c 2. 启动日志: adb logcat Activi ...
- 在Android手机上获取其它应用的包名及版本
转载请注明出处:http://blog.csdn.net/jason_src/article/details/37757661 获取Android手机上其它应用的包名及版本方法有非常多,能够通过AAP ...
- Android 在Android手机上获取其他应用的包名及版本号
获取Android手机上其他应用的包名及版本号方法有很多,可以通过AAPT从APK包中直接获取,也可以通过代码在手机上获取.显然,对于产品或者用户来说要获取这些信息,在手机上获取更为简便. 下面我们来 ...
- 获取软件的apk包名、查看手机设备名称等
获取软件的apk包名 1.下载aapt,这里使用的是SDK自带的aapt,找到SDK路径下面的aapt.exe,本机路径:E:\downloads\android-sdk_r23.0.2-window ...
- Android在一个APP中通过包名或类名启动另一个APP
开发有时需要在一个应用中启动另一个应用,比如Launcher加载所有的已安装的程序的列表,当点击图标时可以启动另一个应用.一般我们知道了另一个应用的包名和MainActivity的名字之后便可以直接通 ...
- 获取安卓应用APK包名的方法
应用商店按照符合Android标准的原则进行设计,使用包名(Package Name)作为应用的唯一标识.即:包名必须唯一,一个包名代表一个应用,不允许两个应用使用同样的包名.包名主要用于系统识别应用 ...
- c# 获取 Apk ,Aar 文件包名
最近项目有个需求,需要拿到前端上传的Apk或者Aar文件里面的包名. 在这里贡献出来,方便有需求的小伙伴. 项目是 asp.net core 2.2 需要安装 nuget : AndroidXml S ...
随机推荐
- JavaScript的数据类型和变量
1. 数据类型:JS使用弱类型,共4种基本类型,其数据可以是变量,也可以是常量. a) 数值(整数和实数) b) 字符串型(用“”号或‘’括起来的字符或数值) c) ...
- 集成方法 Boosting原理
1.Boosting方法思路 Boosting方法通过将一系列的基本分类器组合,生成更好的强学习器 基本分类器是通过迭代生成的,每一轮的迭代,会使误分类点的权重增大 Boosting方法常用的算法是A ...
- Fast RCNN 中的 Hard Negative Mining
 Fast RCNN 中将与 groud truth 的 IoU 在 [0.1, 0.5) 之间标记为负例, [0, 0.1) 的 example 用于 hard negative mining. ...
- LNMP一键包安装后解决MySQL无法远程连接问题
MySQL/MariaDB无法远程连接,如何开启? 1,没有给root对应的权限 -- @'192.168.1.123'可以替换为@‘%’就可任意ip访问 mysql> GRANT ALL PR ...
- 【转载】IIS出现“HTTP 错误 500.0,C:\php\php-cgi.exe - FastCGI 进程意外退出”解决方法
昨天给大家介绍了在windows+iis的平台上搭建支持php+mysql平台的文章,教程步骤都是笔者一步一个操作然后一个记录介绍给大家的,实机演练,教程绝对切实可用,但是不同的同学在不同的环境下按照 ...
- 入坑C++之vs 新建C++项目
首先呢,下载一个visual studio 2017的编辑器工具,可能有最新的2019年的版本,根据自己喜欢选择哪个版本就好了 visual studio IDE下载地址:https://visua ...
- 面试容易问到的Linux问题
1.有没有使用过linux?用来干什么? Linux是一个长时间运行比较稳定的操作系统,我们一般会拿它作为服务器. 一下软件(redis等)没有软件包,需要在linux的C编译环境下编译得到软件包. ...
- 解决Linux(Loaded plugins: fastestmirror Please use /usr/bin/yum --help)
大概意思是fastestmirror不能使用,fastestmirror是yum的一个加速插件 处理办法就是禁用这个插件 方法两种 第一种 vi /etc/yum/pluginconf.d/faste ...
- Windows Internals 笔记——字符和字符串处理
1.自Windows NT起,Windows的所有版本都完全用Unicode来构建,调用Windows函数时,如果向它传入一个ANSI字符串,那么函数首先会把字符串转换为Unicode,再把结果传给操 ...
- element el-tree 添加图标
1.指定渲染函数:render-content="renderContent" <el-tree ref="tree" :data="funct ...