-
Notifications
You must be signed in to change notification settings - Fork 187
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
不懂就问:Android FPS 数据获取不到,请问需要怎么开启? #249
Comments
[开启
|
建议关闭gfxinfo,用页面的surfaceview |
@JIUJIUs 看你的app页面是啥。华为机器适配会好一点,其他机器不太好说。主要还是surfaceview不同的品牌规则可能不一样。 |
App 是一个游戏,在战斗场景中打斗~ |
感谢,我尝试一下~ |
试了下用 surfaceview ,但还是没有 FPS 数据。(设备:ADT-AN00、PHB110) |
@JIUJIUs 你试试华为,我看看是设备兼容问题还是app兼容问题 |
稍等下,我要去借一台。 |
大佬,我华为没借到,但是借到一台晓龙 865 的红米,FPS 也是获取不到,日志如下~ 192.168.10.209 - - [22/Dec/2023 11:23:45] "GET /apm/fps?model=normal&platform=Android&pkgname=com.tectree.eto&device=8bc4c003(M2007J3SC)&surv=true&=1703215387872 HTTP/1.1" 200 - |
游戏类app,只兼容了华为,没机器没办法 |
C:\Users\Administrator>adb devices C:\Users\Administrator>adb shell dumpsys SurfaceFlinger --list | findstr {com.tectree.eto} {8bc4c003} C:\Users\Administrator>adb shell dumpsys SurfaceFlinger --list | findstr com.tectree.eto 8bc4c003 C:\Users\Administrator> 提示这个 |
哦错了,adb -s device id shell dumpsys SurfaceFlinger --list | findstr pkgname |
接入的设备就一台,这样。 C:\Users\Administrator>adb shell dumpsys SurfaceFlinger --list | findstr com.tectree.eto |
还有这个 C:\Users\Administrator>adb shell dumpsys SurfaceFlinger --list com.tectree.eto |
还有这个 C:\Users\Administrator>adb shell dumpsys SurfaceFlinger --latency com.tectree.eto/com.epicgames.unreal.GameActivity#0 |
adb shell dumpsys SurfaceFlinger --latency SurfaceView - com.tectree.eto/com.epicgames.unreal.GameActivity#0 |
C:\Users\Administrator>adb shell dumpsys SurfaceFlinger --latency SurfaceView - com.tectree.eto/com.epicgames.unreal.GameActivity#0 C:\Users\Administrator>adb shell dumpsys SurfaceFlinger --latency SurfaceView - com.tectree.eto/com.epicgames.unreal.GameActivity#0 |
你拉一下代码,然后本地跑一下试试,solox目录执行python debug.py |
好吧,是执行 pip install -U solox 这个拉吧? |
git pull更新一下代码,重新执行一下我看看,我少加了日志 |
来咯~ C:\SoloX\solox>python debug.py
192.168.10.209 - - [22/Dec/2023 14:59:51] "GET /apm/fps?model=normal&platform=Android&pkgname=com.tectree.eto&device=8bc4c003(M2007J3SC)&surv=true&=1703228375966 HTTP/1.1" 200 - 192.168.10.209 - - [22/Dec/2023 14:59:53] "GET /apm/fps?model=normal&platform=Android&pkgname=com.tectree.eto&device=8bc4c003(M2007J3SC)&surv=true&=1703228375971 HTTP/1.1" 200 - 192.168.10.209 - - [22/Dec/2023 14:59:55] "GET /apm/fps?model=normal&platform=Android&pkgname=com.tectree.eto&device=8bc4c003(M2007J3SC)&surv=true&=1703228375977 HTTP/1.1" 200 - |
改了,git pull,继续 |
测试界面分别执行: 多执行几次看看有没有非0的数据,如果没有就解决不了了,这个手机系统机制不一样,我要靠手机写数据到这里才能计算 |
git pull继续 重新拉一下,我看了memory也报错了,顺便一起定位 |
来咯~ 192.168.10.209 - - [22/Dec/2023 15:49:06] "GET /apm/battery?platform=Android&device=d330c5b9(Redmi%20K30)&=1703231331491 HTTP/1.1" 200 -
192.168.10.209 - - [22/Dec/2023 15:49:07] "GET /apm/battery?platform=Android&device=d330c5b9(Redmi%20K30)&=1703231331493 HTTP/1.1" 200 - |
看上去不太对,确定是拉了最新代码吗? |
我再 pull 一次试下~ |
好了 ,FPS 有了 192.168.10.209 - - [22/Dec/2023 16:08:37] "GET /static/logo/logo.png HTTP/1.1" 304 -
192.168.10.209 - - [22/Dec/2023 16:08:53] "GET /apm/battery?platform=Android&device=d330c5b9(Redmi%20K30)&=1703232516278 HTTP/1.1" 200 -
192.168.10.209 - - [22/Dec/2023 16:08:54] "GET /apm/network?model=normal&platform=Android&pkgname=com.tectree.eto&device=d330c5b9(Redmi%20K30)&wifi_switch=true&process=3941%3Acom.tectree.eto&=1703232516280 HTTP/1.1" 200 - |
继续拉代码,memory应该也好了 |
192.168.10.209 - - [22/Dec/2023 16:17:02] "GET /apm/fps?model=normal&platform=Android&pkgname=com.tectree.eto&device=d330c5b9(Redmi%20K30)&surv=true&=1703232986947 HTTP/1.1" 200 -
192.168.10.209 - - [22/Dec/2023 16:17:04] "GET /apm/mem?model=normal&platform=Android&pkgname=com.tectree.eto&device=d330c5b9(Redmi%20K30)&process=3941%3Acom.tectree.eto&=1703232986955 HTTP/1.1" 200 - |
系统写的数据太慢,很多都是0,估计你那台设备计算的fps可能不准。这个没办法了 |
晓得~ |
我还有一台 OnePlus 被借走了,下周回来试试它能获取到 FPS 不~ |
@JIUJIUs 兄弟不要吝啬你的小星星,帮忙点起来吧😄 |
实不相瞒,不太会 GIt ,但是我尝试点了,是这样吗? |
是的,ok了,静静等待2.8.8发布吧 |
好的,爱你~ |
大佬,我又来了,换了一台 OnePlus11 ,页面上没有获取到 mem 和 fps 信息,截图&日志如下~ C:\Users\Administrator>adb shell dumpsys SurfaceFlinger --latency com.tectree.eto/com.epicgames.unreal.GameActivity#0 C:\Users\Administrator>adb shell dumpsys SurfaceFlinger --latency SurfaceView[com.tectree.eto/com.epicgames.unreal.GameActivity]#0 192.168.10.209 - - [26/Dec/2023 15:12:48] "GET /apm/battery?platform=Android&device=fc1e621d(PHB110)&=1703574493576 HTTP/1.1" 200 - 192.168.10.209 - - [26/Dec/2023 15:12:48] "GET /apm/fps?model=normal&platform=Android&pkgname=com.tectree.eto&device=fc1e621d(PHB110)&surv=true&=1703574493580 HTTP/1.1" 200 -
|
adb -s device id shell dumpsys SurfaceFlinger --list | findstr pkgname |
C:\Users\Administrator>adb shell dumpsys SurfaceFlinger --list | findstr com.tectree.eto |
adb shell dumpsys SurfaceFlinger --latency com.tectree.eto/com.epicgames.unreal.GameActivity#469 这四个都执行看看,执行久一点,看看哪个有不是0的数据,都是0的就不用发了 |
好像都是 16666666 C:\Users\Administrator>adb shell dumpsys SurfaceFlinger --latency com.tectree.eto/com.epicgames.unreal.GameActivity#469 C:\Users\Administrator>adb shell dumpsys SurfaceFlinger --latency com.tectree.eto/com.epicgames.unreal.GameActivity#470 C:\Users\Administrator>adb shell dumpsys SurfaceFlinger --latency SurfaceViewcom.tectree.eto/com.epicgames.unreal.GameActivity#470 C:\Users\Administrator>adb shell dumpsys SurfaceFlinger --latency SurfaceView[com.tectree.eto/com.epicgames.unreal.GameActivity]#469 |
16666666这个不管,目前程序是用了这个SurfaceView[com.tectree.eto/com.epicgames.unreal.GameActivity]#469,一直都是0的话就没办法了,这个要靠系统把数据写进来才可以,有些设备是写的慢有些压根没写。安卓没办法不同机型机制都不太一样。 内存的我兼容了 |
好的了解,辛苦大佬· |
太强了太耀眼了。大佬对鸿蒙也支持吗,我还没设备可以对比测试 |
换了小米、华为都没办法拿到fps。。android12、13的,FPS一直是空,但是换成其他原生的app就可以,是unity的现在不支持吗 |
麻烦问题下,你那边可以了么,我的手机(PHB110)也是获取不到fps,请问怎么解决 |
其实还有一种情况,Android 12以后,SurfaceView引入了一个Blast,导致安卓12以上的设备,其实需要通过含有BLAST的字段的那个做匹配,这样获取到的fps数据才是正确的,也可能是我测试的是unity制作的应用。但按照我后面改的代码,其他应用我测试目前也没有问题,其他应用会走get_surfaceview而不是get_surfaceview_activity。 网上搜索到的BLAST的解释: 本地获取的数据: C:\Users\hzm>adb -s P7PR9PZHEAMFSKZD shell dumpsys SurfaceFlinger --latency "SurfaceView[com.KST.CS4Like_development/com.easy.game.GamePlayerActivity]#0" C:\Users\hzm>adb -s P7PR9PZHEAMFSKZD shell dumpsys SurfaceFlinger --latency "SurfaceViewcom.KST.CS4Like_development/com.easy.game.GamePlayerActivity#0" 所以可以在_get_surfaceflinger_frame_data中get_surfaceview得到的focus_window通过dumpsys SurfaceFlinger --latency xxx获取的数据不对的时候,将get_surfaceview_activity的判断中加入一个判断BLAST字符串是否存在,同时后面activity_line不做处理,就能在android 12以及以上设备得到正确的结果,这是我临时修改后,可以正确在安卓12上获取fps数据的代码,作者可以看看是否可以改动一下。这只是临时版本,也可以考虑判断设备sdk版本是否是31,然后加入相应判断即可。仅供作者参考,作者的这个项目我很佩服,谢谢。
|
SoloX :2.8.6
Python :3.10.11
System:WIndows 11
Browser:Chrome
Device:OnePlus 11, PHB110, Android 13
问题:FPS 数据获取不到,一直输出是 0 ,请问需要开启什么嘛?求大佬指引~
The text was updated successfully, but these errors were encountered: