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

 

posted @ 2020-09-13 13:29  阿zZ泽  阅读(668)  评论(0)    收藏  举报