公司最近要做启动时长,需求是在每次周版本分别记录一下
app的整体功耗(耗电量以后更新),和app的启动时长
有广告:猎豹清理大师,首页开屏会出广告,可以使用ssp聚合过滤,把渠道置为0关闭
app大多数弹窗有云控,以安卓aid尾号做下发,也可以通过adb命令修改aid
特殊弹窗:权限给足,首先要至少启动一次检查无误后kill掉,保持第一次冷启动
1.保持电脑和设备在同一个网段能够ping通
2.插线,adb tcpip 5555
使用adb命令
adb shell am start -W -n com.cleanmaster.mguard_cn/com.keniu.security.main.MainActivity
包名/第一个activity
app冷启动后检查到最上面activity出现后结束,会记录三个时间
分别是
通过图像识别的像素对比,选取app启动后首页的某一个区域模块,app每次启动后图像识别到这一个区域,就说明启动完成,记录这一段的时间
1.这段区域为截图,比对时候上传这一块的图片。
截图必须使用当前设备来截取,不可以使用外置截图,比如裁剪,微信截图之类的,会影响图片质量分辨率
2.选取的区域不能有颜色、样式等的变化,不然识别不到
3.默认从屏幕的左上角为(0,0)坐标开始检索,理论上有速度差异,但是差异不大
先代码截图icon
def video_recording(time_limit=10, fime_name='demo.mp4'):
"""视频录制.
"""
adb = ADB()
cmd = 'screenrecord --time-limit %d /sdcard/%s' % (time_limit, fime_name)
return adb.shell(cmd)
def video_separate_to_frame(video_file, pic_path):
"""
视频分帧
@ video_file: 视频文件
@ pic_path: 分帧后图片存储目录
"""
if os.path.exists(pic_path):
os.system('rm -rf ' + pic_path)
os.system('mkdir ' + pic_path)
print('开始视频分帧')
cap = cv2.VideoCapture(video_file)
frame_count = 1
total_frames = cap.get(cv2.CAP_PROP_FRAME_COUNT)
while 1:
success, frame = cap.read()
if not success:
break
cv2.imwrite(pic_path + '/' + "%d.jpg" %(frame_count), frame)
frame_count += 1
return int(total_frames)
def capture_target_image(args):
"""截取模版.
:return:
"""
serial, main_activity, flag, src_pic, pos = args
des_pic = os.path.join(os.path.dirname(__file__), 'lib', serial, main_activity.split('/')[0].strip(' ') + '.png')
if not os.path.exists(os.path.dirname(des_pic)):
os.makedirs(os.path.dirname(des_pic))
print(des_pic)
image = cv2.imread(src_pic)
def on_EVENT_LBUTTONDOWN(event, x, y, flags, param):
if event == cv2.EVENT_LBUTTONDOWN:
xy = "%d,%d" % (x, y)
print(xy)
cv2.circle(image, (x, y), 1, (255, 0, 0), thickness=-1)
cv2.putText(image, xy, (x, y), cv2.FONT_HERSHEY_PLAIN,
1.0, (0, 0, 0), thickness=1)
cv2.imshow("img", image)
cv2.namedWindow("img", 0)
cv2.setMouseCallback("img", on_EVENT_LBUTTONDOWN)
if flag == 'see':
cv2.imshow('img', image)
cv2.waitKey(0)
elif flag == 'save':
x1, y1, x2, y2 = pos
img = image[y1: y2, x1: x2]
cv2.imwrite(des_pic, img)
``
后续操作可以参考:
https://github.com/williamfzc/stagesepx
https://blog.csdn.net/longlong2015/article/details/88825956