smart-test-ti / SoloX

💯SoloX - Real-time collection tool for Android/iOS performance data.(Android性能测试android performance\iOS性能测试ios performance\移动端性能测试mobile performance\APP性能测试app performance\app性能测试工具)
https://smart-test-ti.github.io/solox
MIT License
993 stars 177 forks source link

不懂就问:Android FPS 数据获取不到,请问需要怎么开启? #249

Closed JIUJIUs closed 9 months ago

JIUJIUs commented 10 months ago

SoloX :2.8.6 Python :3.10.11 System:WIndows 11 Browser:Chrome Device:OnePlus 11, PHB110, Android 13

问题:FPS 数据获取不到,一直输出是 0 ,请问需要开启什么嘛?求大佬指引~

image image image

liuzhudemeng commented 1 month ago

surfaceview

试了下用 surfaceview ,但还是没有 FPS 数据。(设备:ADT-AN00、PHB110)

麻烦问题下,你那边可以了么,我的手机(PHB110)也是获取不到fps,请问怎么解决

hzm commented 4 weeks ago

其实还有一种情况,Android 12以后,SurfaceView引入了一个Blast,导致安卓12以上的设备,其实需要通过含有BLAST的字段的那个做匹配,这样获取到的fps数据才是正确的,也可能是我测试的是unity制作的应用。但按照我后面改的代码,其他应用我测试目前也没有问题,其他应用会走get_surfaceview而不是get_surfaceview_activity。

网上搜索到的BLAST的解释: Android S(也就是12.0)版本之前,关于应用显示方面面临几个问题:应用程序在缓冲区的提交中灵活性不足,窗口与应用绘制之间无法做到同步,多进程数据无法做到同步。BLAST 旨在解决这两个问题,同时简化 SF 中的模型。

本地获取的数据: C:\Users\hzm>adb -s P7PR9PZHEAMFSKZD shell dumpsys SurfaceFlinger --list | findstr com.KST.CS4Like_development ActivityRecord{a6723a9 u0 com.KST.CS4Like_development/com.easy.game.GamePlayerActivity#0 56d18fd com.KST.CS4Like_development/com.easy.game.GamePlayerActivity#0 Background for SurfaceView[com.KST.CS4Like_development/com.easy.game.GamePlayerActivity]#0 SurfaceView[com.KST.CS4Like_development/com.easy.game.GamePlayerActivity]#0 SurfaceViewcom.KST.CS4Like_development/com.easy.game.GamePlayerActivity#0 com.KST.CS4Like_development/com.easy.game.GamePlayerActivity#0 Bounds for - com.KST.CS4Like_development/com.easy.game.GamePlayerActivity#0

C:\Users\hzm>adb -s P7PR9PZHEAMFSKZD shell dumpsys SurfaceFlinger --latency \"SurfaceView[com.KST.CS4Like_development/com.easy.game.GamePlayerActivity]#0\" 16666667 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

C:\Users\hzm>adb -s P7PR9PZHEAMFSKZD shell dumpsys SurfaceFlinger --latency \"SurfaceViewcom.KST.CS4Like_development/com.easy.game.GamePlayerActivity#0\" 16666667 495498343153455 495498379510686 495498371345532 495498384762148 495498429195994 495498412915686 495498427926071 495498462302455 495498456181840 495498470463071 495498511997148 495498498768225 495498512523378 495498545083686 495498540842455 495498555463301 495498594759302 495498583697148 495498597886071 495498627886686 495498626127686 495498639002455 495498677553148 495498668212917 495498682674455 495498727230686 495498711051302 495498724559378 495498760335994 495498752864532 495498766818378 495498810007609 495498795065148 495498806847917 495498843141763 495498835531302 495498849801148 495498892810994 495498878220609 495498890802378 495498925918148 495498919358378 495498932127071 495498975583302 495498960346071 495498972440302 495499008701532 495499000866686 495499014123378 495499058372302 495499042674686 495499054206994 495499091488917 495499084103686 495499094180917 495499124618148 495499122515686 495499134571378 495499174286378 495499162977763 495499173088532 495499207396302 495499201748225 495499213951378 495499257079302 495499242295609 495499253391378 495499290190686 495499281729532 495499291287378 495499323296609 495499319898686 495499331650994 495499372982686 495499360158378 495499370664609 495499406101840 495499398976609 495499408916917 495499439211917 495499437702686 495499448962148 495499488887686 495499477552302 495499488082994 495499521993148 495499516704840 495499527162994 495499571675609 495499555345763 495499565022994 495499604775686 495499593660609 495499605165532 495499637891378 495499633584532 495499644768225 495499687579302 495499672926148 495499682977763 495499720697148 495499711645148 495499724082763 495499753807071 495499752255994 495499763717763 495499803482763 495499792234148 495499803002455 495499836585148 495499832075071 495499843457225 495499886269763 495499872116225 495499883643686 495499919374455 495499911710763 495499923642071 495499969058994 495499951722379 495499966416302 495500002160225 495499994774455 495500009671686 495500051832302 495500038031917 495500051123302 495500084954148 495500082541225 495500096469532 495500134623379 495500124172917 495500140802763 495500184297840 495500168361840 495500184785763 495500217425225 495500212298455 495500224035917 495500267089148 495500255241763 495500272486455 495500316766379 495500300384532 495500314597148 495500349874379 495500342912225 495500357426994 495500399556609 495500386113763 495500399169455 495500432683302 495500427691379 495500442487379 495500482336302 495500470836609 495500484161455 495500515459994 495500512980917 495500526133532 495500565137455 495500554689148 495500569546994 495500614807994 495500597569840 495500611905840 495500647925532 495500640279994 495500653086455 495500697594686 495500682154686 495500696300302 495500730774379 495500724829532 495500738541148 495500780385532 495500766765840 495500780173225 495500813503609 495500808639609 495500822234455 495500863158686 495500850429148 495500863302148 495500896276532 495500891539686 495500904478379 495500945960302 495500932689763 495500945774071 495500979076302 495500974318379 495500986479917 495501028749840 495501015078455 495501026476532 495501061852302 495501054480225 495501067565225 495501111536532 495501095908302 495501107420532 495501144655994 495501135942686 495501147468532 495501177755609 495501175922994 495501187007686 495501227441148 495501215273456 495501225211609 495501260546686 495501253948225 495501265334456 495501310229148 495501293648609 495501304513225 495501343330148 495501333346148 495501343829225 495501376463609 495501372399609 495501382809532 495501426134148 495501411242379 495501421241225 495501459237148 495501449523379 495501461045532 495501492365148 495501489697225 495501499869148 495501542088225 495501528323071 495501538943302 495501575175609 495501567326456 495501578257840 495501608290686 495501606560225 495501617090148 495501657939071 495501645383302 495501655438379 495501691070456 495501684566456 495501696746763 495501740743609 495501724783071 495501735920302 495501773831994 495501765606071 495501775882686 495501806951917 495501804536225 495501814423302 495501856618148 495501843083302 495501855774686 495501889734379 495501884466148 495501896166379 495501939420225 495501924534071 495501939094071 495501972538456 495501967687994 495501981445763 495502022212917 495502009607071 495502024087609 495502071880840 495502054345840 495502068734148 495502104987302 495502097643071 495502111798071 495502154668225 495502140404917 495502153627609 495502187790071 495502182159379 495502197243609 495502237463917 495502225867686 495502241109532 495502270618456 495502269500302 495502283714763 495502320235071 495502311452302 495502327891302 495502369907379 495502356178994 495502370708225 495502403031379 495502398772302 495502409108532 495502452694686 495502440641763 495502456379686 495502485821456 495502484438686 495502499773456 495502535484840 495502528413840 495502542183686 495502585155379 495502570240302 495502585078456 495502618286763 495502613524917 495502627280533 495502667945148 495502655667379 495502670044225 495502701071686 495502698404225 495502712229763 495502750735379 495502740107302 495502754828609 495502800415917 495502782890071 495502796579302 495502833535917 495502825022686 495502837981763 495502883207994 495502866177840 495502879190686 495502916326456 495502907911994 495502920560917 495502965995994 495502949216225 495502960691609 495502999099686 495502989413148 495503002556609 495503032236302 495503030916840 495503043287609 495503081886071 495503071815994 495503083158994 495503115016533 495503112662456 495503122013456 495503164686994 495503150377225 495503163255609 495503197794686 495503191518456 495503202942994 495503247494071 495503231182994 495503241196917 495503280594994 495503269423071 495503281527994 495503313696302 495503309756609 495503319726763 495503363377840 495503348605763 495503358023071 495503396498763 495503386902686 495503398501148 495503429630379 495503426490071 495503437779302 495503479285225 495503466082379 495503475863379 495503512385533 495503503848302 495503516723302 495503545504609 495503544391302

所以可以在_get_surfaceflinger_frame_data中get_surfaceview得到的focus_window通过dumpsys SurfaceFlinger --latency xxx获取的数据不对的时候,将get_surfaceview_activity的判断中加入一个判断BLAST字符串是否存在,同时后面activity_line不做处理,就能在android 12以及以上设备得到正确的结果,这是我临时修改后,可以正确在安卓12上获取fps数据的代码,作者可以看看是否可以改动一下。这只是临时版本,也可以考虑判断设备sdk版本是否是31,然后加入相应判断即可。仅供作者参考,作者的这个项目我很佩服,谢谢。 image

def get_surfaceview_activity(self):
    activity_name = ''
    activity_line = ''
    try:
        dumpsys_result = adb.shell(cmd='dumpsys SurfaceFlinger --list | {} {}'.format(d.filterType(), self.package_name), deviceId=self.device)
        dumpsys_result_list = dumpsys_result.split('\n')    
        for line in dumpsys_result_list:
            if line.startswith('SurfaceView') and line.find(self.package_name) != -1 and line.find("BLAST") != -1:
                activity_line = line.strip()
                break
        if activity_line:
            if activity_line.find(' ')  != -1:      
                activity_name = activity_line.split(' ')[2]
            else:
                activity_name = activity_line
        else:
            activity_name = dumpsys_result_list[len(dumpsys_result_list) - 1]
            if not activity_name.__contains__(self.package_name):
                logger.error('get activity name failed, Please provide SurfaceFlinger --list information to the author ' + activity_name)
                logger.info('dumpsys SurfaceFlinger --list info: {}'.format(dumpsys_result))
    except Exception:
        traceback.print_exc()
        logger.error('get activity name failed, Please provide SurfaceFlinger --list information to the author')
        logger.info('dumpsys SurfaceFlinger --list info: {}'.format(dumpsys_result))
    return activity_name

@rafa0128

image image 有部分字符被github给转义了,具体可以看下面的截图。