欢迎访问皮皮网官网
皮皮网

【诚源码头】【AQS源码解读】【doclever源码下载】得物源码_仿得物源码

时间:2024-11-15 12:21:52 分类:热点 来源:店里用的溯源码是真的吗

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

得物源码_仿得物源码

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

       一、背景

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

       二、源码问题排查纪录

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

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

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

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

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

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

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

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

       三、临时解决

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

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

       四、最后

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

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

copyright © 2016 powered by 皮皮网   sitemap