python+adb获取手机app名称
获取手机app在手机上显示的应用名称
在stack overflow找到方法具体记录一下
前置条件:
1.下载appt-arm-pie #URL:https://github.com/Calsign/APDE/blob/master/APDE/src/main/assets/aapt-binaries/aapt-arm-pie
2.将aapt-arm-pie push 到手机 data/local/tmp 文件夹中
3.设置权限 adb shell chmod 0755 /data/local/tmp/aapt-arm-pie
方法:
1.获取所有app的base.apk路径和包名
2.循环获取 app名和activity
(存在一些app 没有名字或activity的情况)
1 cmd = 'adb -s {} shell pm list package -3 -f'.format(self.device) 2 res = os.popen(cmd).read() 3 if 'error' in res: 4 return '请先选择设备' 5 else: 6 #[('/data/app/io.appium.settings-e7dZrgG-472uUYYTTRT8Eg==/base.apk', 'io.appium.settings')] 7 info_list = re.compile(r'(/.*/base\.apk)=(.*)').findall(res, re.M) 8 app_info = [] 9 for item in info_list: 10 msg = {'package_name':item[1]} 11 cmd = 'adb shell /data/local/tmp/aapt-arm-pie d badging {}'.format(item[0]) 12 res = subprocess.run(cmd, shell=True, stdout=subprocess.PIPE).stdout.decode('utf8') 13 try: 14 app_name = re.compile(r'application-label-zh-CN:(.*)').findall(res)[0].strip() 15 except Exception as e: 16 print(item) 17 else: 18 try: 19 app_activity = re.compile(r'launchable-activity: name=(.*)label').findall(res)[0].strip() 20 except Exception as e: 21 print(item) 22 else: 23 msg['app_name'] = app_name.replace("'","") 24 msg['activity'] = app_activity.replace("'","") 25 # 0 是路径 1 是包名 26 app_info.append(msg) 27 return app_info

浙公网安备 33010602011771号