打开市面上常用apk冷热启动脚本

#!/usr/bin/python

-- coding: UTF-8 --

autor:JoeNero

date :2020-12-10

import csv
import os
import time

cmdOk =‘is Ok!’

apkAct =(
“com.tencent.mobileqq/com.tencent.mobileqq.activity.SplashActivity”, #qq
“com.tencent.mm/com.tencent.mm.ui.LauncherUI”, #wechat
“com.sina.weibo/com.sina.weibo.VisitorMainTabActivity”, #微博
“com.ss.android.ugc.aweme/com.ss.android.ugc.aweme.splash.SplashActivity”, #抖音
“com.qiyi.video/com.qiyi.video.WelcomeActivity”, #爱奇艺
“com.ss.android.article.news/com.ss.android.article.news.activity.MainActivity”, #今日头条
“com.happyelements.AndroidAnimal/com.happyelements.hellolua.MainActivity”, #开心消消乐
“com.ss.android.article.video/com.ss.android.article.video.activity.SplashActivity”,#西瓜视频
“com.taobao.taobao/com.taobao.tao.welcome.Welcome”, #淘宝
“com.baidu.searchbox/com.baidu.searchbox.MainActivity”, #百度
“com.eg.android.AlipayGphone/com.eg.android.AlipayGphone.AlipayLogin”, #支付宝
“com.tencent.karaoke/com.tencent.karaoke.module.splash.ui.SplashBaseActivity”, #全民k歌
“com.snda.wifilocating/com.lantern.launcher.ui.MainActivity”, #Wifi万能钥匙
“com.lechuan.midunovel/com.lechuan.midunovel.ui.activity.WelcomeActivity”, #米读小说
“com.sdu.didi.psnger/com.didi.sdk.app.MainActivity”, #滴滴出行
“com.tencent.qqmusic/com.tencent.qqmusic.activity.AppStarterActivity”, #QQ音乐
“com.autonavi.minimap/com.autonavi.map.activity.NewMapActivity”, #高德地图
“com.baidu.homework/com.baidu.homework.activity.index.IndexActivity”, #作业帮
“com.sankuai.meituan/com.meituan.android.pt.homepage.activity.MainActivity”, #美团
“cn.xuexi.android/com.alibaba.android.rimet.biz.SplashActivity”, #学习强国
“com.smile.gifmaker/com.yxcorp.gifshow.HomeActivity”, #快手
“com.ss.android.ugc.livelite/com.ss.android.ugc.live.main.MainActivity”, #火山小视频
“com.tencent.qqlive/com.tencent.qqlive.ona.activity.SplashHomeActivity”, #腾讯视频
“com.youku.phone/com.youku.v2.HomePageEntry”, #优酷
“com.jifen.qukan/com.jifen.qkbase.main.MainActivity”, #趣头条
“com.tencent.news/com.tencent.news.activity.SplashActivity”, #腾讯新闻
“com.qqgame.hlddz/com.qqgame.hlddz.NewHLDDZ”, #欢乐斗地主
“com.baidu.haokan/com.baidu.haokan.app.activity.HomeActivity”, #好看视频
“com.kingkr.keqiaoling/com.bslyun.app.activity.MainActivity”, #咸鱼
“com.tencent.mtt/com.tencent.mtt.MainActivity”, #QQ浏览器
“com.UCMobile/com.uc.browser.InnerUCMobile”, #uc浏览器
“com.chinamworld.main/com.ccb.start.MainActivity”, #中国建设银行
“com.tencent.qqpimsecure/com.tencent.server.fore.QuickLoadActivity”, #腾讯手机管家
“com.baidu.BaiduMap/com.baidu.baidumaps.MapsActivity”, #百度地图
“com.tencent.tmgp.sgame/com.tencent.tmgp.sgame.SGameActivity”, #王者荣耀
“com.tencent.tmgp.pubgmhd/com.epicgames.ue4.SplashActivity”, #和平精英
)
#apk包名
apk=(
“com.tencent.mobileqq”, #qq
“com.tencent.mm”, #wechat
“com.sina.weibo”, #微博
“com.ss.android.ugc.aweme”, #抖音
“com.qiyi.video”, #爱奇艺
“com.ss.android.article.news”, #今日头条
“com.happyelements.AndroidAnimal”, #开心消消乐
“com.ss.android.article.video”, #西瓜视频
“com.taobao.taobao”, #淘宝
“com.baidu.searchbox”, #百度
“com.eg.android.AlipayGphone”, #支付宝
“com.tencent.karaoke”, #全民k歌
“com.snda.wifilocating”, #Wifi万能钥匙
“com.lechuan.midunovel”, #米读小说
“com.sdu.didi.psnger”, #滴滴出行
“com.tencent.qqmusic”, #QQ音乐
“com.autonavi.minimap”, #高德地图
“com.baidu.homework”, #作业帮
“com.sankuai.meituan”, #美团
“cn.xuexi.android”, #学习强国
“com.smile.gifmaker”, #快手
“com.ss.android.ugc.livelite”, #火山小视频
“com.tencent.qqlive”, #腾讯视频
“com.youku.phone”, #优酷
“com.jifen.qukan”, #趣头条
“com.tencent.news”, #腾讯新闻
“com.qqgame.hlddz”, #欢乐斗地主
“com.baidu.haokan”, #好看视频
“com.kingkr.keqiaoling”, #咸鱼
“com.tencent.mtt”, #QQ浏览器
“com.UCMobile”, #uc浏览器
“com.chinamworld.main”, #中国建设银行
“com.tencent.qqpimsecure”, #腾讯手机管家
“com.baidu.BaiduMap”, #百度地图
“com.tencent.tmgp.sgame”, #王者荣耀
“com.tencent.tmgp.pubgmhd”, #和平精英
)
#apk的名字
apkName=(
‘QQ’,
‘wechat’,
‘微博’,
‘抖音’,
‘爱奇艺’,
‘今日头条’,
‘开心消消乐’,
‘西瓜视频’,
‘淘宝’,
‘百度’,
‘支付宝’,
‘全民K歌’,
‘wifi万能钥匙’,
‘米读小说’,
‘滴滴出行’,
‘QQ音乐’,
‘高德地图’,
‘作业帮’,
‘美团’,
‘学习强国’,
‘快手’,
‘火山小视频’,
‘腾讯视频’,
‘优酷’,
‘趣头条’,
‘腾讯新闻’,
‘欢乐斗地主’,
‘好看视频’,
‘咸鱼’,
‘QQ浏览器’,
‘UC浏览器’,
‘中国建设银行’,
‘腾讯手机管家’,
‘百度地图’,
‘王者荣耀’,
‘和平精英’,
)

class App(object):
def init(self):
self.content = “”
self.startTime = 0

# 启动App
def LaunchApp(self,i):
    cmd = 'adb shell am start -W -n '+apkAct[i]
    self.content = os.popen(cmd)

# 热启动停止App
def HotStopApp(self):
    cmd = 'adb shell input keyevent 3'
    os.popen(cmd)

# 冷启动停止App
def ClodStopApp(self):
    cmd = 'adb shell am force-stop '+apk[i]
    os.popen(cmd)

# 获取启动时间
def GetLaunchedTime(self):
    #print(self.content.readlines())
    for line in self.content.readlines():
        if "TotalTime" in line:
            self.startTime = line.split(":")[1]
            break
    return self.startTime

控制类

class Controller(object):
def init(self, count):
self.app = App()
self.counter = count
self.alldata = [(“timestamp”, “elapsedtime”)]

# 单次启动测试过程
def Testprocess(self,i,flag):
    self.app.LaunchApp(i)
    # time.sleep(5)
    time.sleep(5)
    elpasedtime = self.app.GetLaunchedTime()
    if flag == 1:
        self.app.ClodStopApp()#标记冷启动
    elif flag == 0:
        self.app.HotStopApp()#标记热启动
    else:
        print("冷热启动标识符错误 erro")
    # time.sleep(2)
    time.sleep(2)
    currenttime = self.getCurrentTime()
    self.alldata.append((currenttime, elpasedtime))

# 多次执行测试过程
def Run(self,i,flag):
    while self.counter > 0:
        self.Testprocess(i,flag)
        self.counter = self.counter - 1

# 获取当前的时间戳ms级
# def getCurrentTime(slef):
#     ct = time.time()
#     local_time = time.localtime(ct)
#     data_head = time.strftime("%Y-%m-%d %H:%M:%S", local_time)
#     data_secs = (ct - int(ct)) * 1000
#     time_stamp = "%s.%03d" % (data_head, data_secs)
#     #print(time_stamp)
#     return time_stamp

# 获取当前的时间戳S级
def getCurrentTime(self):
    currentTime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
    return currentTime

# 数据的存储
def SaveDataToCSV(self,fileName):
    csvfile = file(fileName, 'wb')
    writer = csv.writer(csvfile)
    writer.writerows(self.alldata)
    csvfile.close()

#中位数
def median(data):
    data.sort()
    half = len(data) // 2
    return (data[half] + data[~half])/2

def 

if name == “main”:
# os.system(“echo 热启动开始”)
# i = 3
# print(apkName[i])
# time.sleep(2)
# controller = Controller(5)
# controller.Run(i,0)
# controller.SaveDataToCSV(‘热启动时间’+apkName[i]+‘.csv’)
# os.system("echo "+apkName[i]+cmdOk)
print(“冷启动开始”)
tick1 = time.time()
# print(“测试开始的时间为:%.2f秒”%tick1)
# os.system(“echo 冷启动开始”)
for i in range(0,35):
time.sleep(2)
controller = Controller(5)
controller.Run(i,1)
controller.SaveDataToCSV(apkName[i]+‘_冷启动时间’+‘.csv’)
os.system("echo "+apkName[i]+cmdOk)
tick2 = time.time()
# print(“测试结束的时间为:%.2f秒”%tick2)
print (“测试时间为:%.2f秒”%(tick2-tick1))

  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高启强不卖鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值