获取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 ...
随机推荐
- 【js课设】电子画板01
这学期web开发课的课设选了电子画板课题.(人家本来想做富文本编辑器的嘛然鹅老师在第二版里把这题删掉了。゚ヽ(゚´Д`)ノ゚。) 主要考虑的有[界面美观][画笔类型][画布分层]这三个点了. [界面美 ...
- Linux配置日志服务器
title: Linux配置日志服务器 tags: linux, 日志服务器 --- Linux配置日志服务器 日志服务器配置文件:/etc/rsyslog.conf 服务器端: 服务器IP如下: 编 ...
- QML ListView json
1.main.cpp #include <QGuiApplication> #include <QQmlApplicationEngine> #include <QQml ...
- Linux -- Centos6 yum安装相关问题与处理
Centos6 yum安装相关问题与处理 由于要使用yum下载文件,突然yum下载不了想要的文件,想更换yum源,结果得重新安装yum 来自本人GitHub地址https://github.com/m ...
- 【原创】运维基础之Docker(2)通过docker部署zookeeper nginx tomcat redis kibana/elasticsearch/logstash mysql kafka mesos/marathon
通过docker可以从头开始构建集群,也可以将现有集群(配置以及数据)平滑的迁移到docker部署: 1 docker部署zookeeper # usermod -G docker zookeeper ...
- 在浏览器中查看.vue文件的源码
- 初学python之路-day01
第一天学习python,先了解到了进制之间的转换关系. 如二进制与十进制的转换,如1111转成十进制为15,1111从左向右可看出2^3+2^2+2^1+2^0为8+4+2+1=15.记住前8位1的二 ...
- Android 键盘键名和键值列表
电话键 KEYCODE_CALL 拨号键 5 KEYCODE_ENDCALL 挂机键 6 KEYCODE_HOME 按键Home 3 KEYCODE_MENU 菜单键 82 KEYCODE_BACK ...
- Windows安装activemq
1.Windows下载解压就可以了,官网:http://activemq.apache.org/ 8161查看端口 61616消息服务端口 2.浏览器访问localhost:8161测试 3.可以在c ...
- vs2010编译error_code
C1083 : 现象: xxxxx.cpp clxx:fatal error C1083:无法打开源文件: “..\..\..\..\src\folder1\folder2\folder3\folde ...