欢迎来到皮皮网网站!

【商业源码网站好吗】【赛车网站源码】【水果生鲜源码】得物 源码_得物源码

时间:2024-11-30 07:33:04 来源:pg源码多少

1.你的得物得物debug包在Android 14变卡了吗?|得物技术

得物 源码_得物源码

你的debug包在Android 14变卡了吗?|得物技术

       一、背景

       在使用Android 时,源码源码突然发现debug包运行变卡顿,得物得物经过排查发现是源码源码Android 系统中debug包执行效率降低导致。

       二、得物得物问题排查纪录

       使用systrace、源码源码商业源码网站好吗dutrace等工具进行常规排查,得物得物发现CPU空闲,源码源码主线程无明显阻塞,得物得物问题出在方法执行耗时。源码源码

       在使用dutrace工具时发现异常现象,得物得物怀疑与解释执行方式有关。源码源码分析源码后,得物得物发现Android 版本使用了switch解释执行方式,源码源码而Android 、得物得物赛车网站源码版本则使用mterp或nterp,怀疑是解释执行导致卡顿。

       尝试修改debuggable属性,测试结果表明,与解释执行方式相关,但不是直接原因。接着怀疑是水果生鲜源码native方法执行耗时问题,再次排查,发现问题主要出在debuggable属性的影响。

       分析AndroidManifest文件和Process类,发现debuggable属性影响了runtimeFlags,导致系统启动时加载了额外的flag,这可能是问题源头。

       尝试通过hook系统进程参数,aop 源码解析发现移除DEBUG_JAVA_DEBUGGABLE后,debug包运行流畅,而加上此标志后,所有应用变卡,确认问题是由于DEBUG_JAVA_DEBUGGABLE导致的。

       继续分析后发现,DeoptimizeBootImage方法将bootImage中的UI客栈源码AOT代码转换为java可调试,导致方法执行切换到switch解释执行,这是问题的关键。

       进一步分析发现,即使hook了CanRuntimeUseNterp方法,方法执行依然切换到switch解释执行,因此确认是bootImage中的方法在Android 中执行效率低下的问题。

       验证问题为系统层面的问题,并通过社区反馈和补全问题报告,等待官方修复。

       三、临时解决

       尝试在等待修复的同时,通过修改代码逻辑,使用UpdateEntrypointsForDebuggable方法,根据规则重新设置方法执行方式,以绕过问题,结果发现流畅度提高。

       进一步思考发现,虽然问题解决,但仍有部分卡顿现象,分析后决定在调用UpdateEntrypointsForDebuggable前将RuntimeDebugState设置为非debugable状态,调用后恢复为debugable状态,最终实现了流畅的debug包体验。

       四、最后

       在后续的分析中,发现高通工程师已确认Google将在Android 中修复此问题,对于海外版本的Android 设备,Google计划通过com.android.artapex模块更新解决。国内用户则需等待手机厂家主动合入修复。

       总结,通过上述方法,临时解决了debug包在Android 中的卡顿问题,并提供了相关代码示例供其他开发者参考。

更多相关资讯请点击【知识】频道>>>