# 日志收集器封装类
import logging # 导入logging模块
class MyLogger:
def __init__(self, name):
self.logger = logging.Logger(name)
self.logger.setLevel('DEBUG')
self.s = logging.StreamHandler()
self.s.setLevel('DEBUG')
self.f = logging.FileHandler('tools.log', encoding='utf-8')
self.f.setLevel('DEBUG')
self.logger.addHandler(self.s)
self.logger.addHandler(self.f)
ft = logging.Formatter("[%(asctime)s - line:%(lineno)d ]: %(levelname)s: %(message)s")
self.s.setFormatter(ft)
self.f.setFormatter(ft)
def info(self, msg, *args, **kwargs):
self.logger.info(msg, *args, **kwargs)
def debug(self, msg, *args, **kwargs):
self.logger.debug(msg, *args, **kwargs)
def warning(self, msg, *args, **kwargs):
self.logger.warning(msg, *args, **kwargs)
def error(self, msg, *args, **kwargs):
self.logger.error(msg, *args, **kwargs)
# 获取启动activity
def get_launcher_activity(serial, package_name):
"""
通过包名去获取 MainActivity
@param package_name:包名
@param serial:手机序列号
:return 如果手机没有该应用返回None,找不到MainActivity返回'',正常找到MainActivity则返回MainActivity字符串
关键字解释:
android.intent.category.LAUNCHER: 决定应用是否在应用程序列表显示.
android.intent.action.MAIN:决定应用的入口地址.
"""
result = os.popen(f'adb -s {serial} shell dumpsys package {package_name}').read()
if not result:
return None
end_index = result.index('android.intent.category.LAUNCHER')
if end_index >= 0:
start_index = (end_index - 300) if end_index - 300 >= 0 else 0 #
lines = result[start_index:end_index].split(' ')
try:
return [line.strip() for line in lines if package_name in line][-1]
except IndexError:
pass
start_index = result.index("android.intent.action.MAIN")
if start_index >= 0:
end_index = (start_index + 300) if (start_index + 300 < len(result)) else len(result)
lines = result[start_index:end_index].split(' ')
# print(lines)
try:
return [line.strip() for line in lines if package_name in line][-1]
except IndexError:
pass
return ''
网友评论