获取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 ...
随机推荐
- pyqt5-按钮基类-QAbstractButton
QAbstractButton 是抽象类 from PyQt5.QtWidgets import QApplication, QWidget,QAbstractButton import sys f ...
- Highcharts开发图表
1.折线图 显示一个静态的折线图,显示如下数据 星期 温度 周一 9~14 周二 4~10 周三 1~7 周四 4~9 周五 5~11 周六 8~13 周天 7~10 新建demo1.html < ...
- C# - 表达式与语句
表达式与语句(Expression&Statement) 操作数(Operands) 1.数字.2.字符.3.变量.4.类型.5.对象.6.方法 操作符(Operator) 参考:C# - 操 ...
- 关于redis服务无法启动问题
打开cmd终端找到redis安装路径下 输入redis-server redis.windows.conf报错信息如下 之后重新输入redis-cli.exe 运行结果 然后输入 127.0.0.1: ...
- phpstudy 2016 切换Nginx+php7.0版本所需运行库 vc14 + 安装redis拓展
去微软官方下载vc14的运行库 链接:https://www.microsoft.com/en-us/download/details.aspx?id=48145 32位运行库 安装成功 切换版本成功 ...
- Vuforia的图像识别之后的服务器下载与ARKit的兼容性解决
2017.12.12 遇到的问题: Could not produce class with ID 75 直接关闭unity里面的Strip engine code,解决下载ab时的崩溃问题 *Str ...
- 《剑指offer》把数组排成最小的数
本题来自<剑指offer> 反转链表 题目: 思路: C++ Code: Python Code: 总结:
- C++反汇编调试
1.使用 OllyDBG打开的dll文件,最好找破解pro版本.不然没有编辑权限 ,目前OllyDBG并不支持eclipse IDE 64位编辑的 .class文件类型. 另外使用反编译的时候物理内 ...
- 配置php5.6.4 + Apache2.4.10
一.下载并安装apache 下载地址:www.apachelounge.com 解压后:执行以下命令: #httpd.exe –k install #httpd.exe -k start 在执行过程中 ...
- Ubuntu18.04安装Python虚拟环境
仅为使用Ubuntu18.04的Python开发人员作参考 1.安装Ubuntu18.04虚拟环境 sudo apt install virtualenv sudo apt install virtu ...