有学员反馈在aosp14上面发现as的debug展示进程是空的,但是在之前的aosp13是好的,具体如下图所示:
自己实体机刷aosp14的

因为马哥这边暂时没有拿实体机去进行测试,一直也没有注意是否有这个问题,但是在模拟器上测试确实是好的,是可以展示出来的相关的java进程。

即总结一下相关问题情况:
as展示的debug进程列表显示
aosp13手机上 正常展示
aosp13模拟器 正常展示
aosp14手机上 无法展示
aosp14模拟器 正常展示
那么其实疑问就有两个就是13升级14以后手机为啥没有了,还有就是为啥模拟器就可以有。
先直接上解决方法后面再解释原理:
执行setprop persist.debug.dalvik.vm.jdwp.enabled 1
重启后查看:

直接修改ENABLE_JDWP变量一直为true,这样就不需要考虑对应属性的值,恢复成和aosp13一样

为啥aosp13上面可以,aosp14不可以,还有为啥aosp14的模拟器可以?下面对这些问题一一会进行解释。 在aosp14上面多了一个变量ENABLE_JDWP(稍后解释JDWP啥意思) 这个变量就是靠属性persist.debug.dalvik.vm.jdwp.enabled来控制true or false

注意啦,这个就是为啥aosp13上没有问题,14有问题原因,疑问这个ENABLE_JDWP变量属于新加入的,在13代码上并没有确实属于google新加入的:

那么为啥14的模拟器又可以呢?
这个就需要进一步看看,难道是14模拟器目标默认编译persist.debug.dalvik.vm.jdwp.enabled就是为1?模拟器其实并不是persist.debug.dalvik.vm.jdwp.enabled控制的,哪怕模拟器上这个属性设置0,也一样是可以见到debug的所有进程。

那这个是为啥?哈哈这个答案需要继续看源码如下:

可以看到有两个条件判断而且是或关系 ,Build.IS_ENG 或者(Build.IS_USERDEBUG && ENABLE_JDWP)任意为true都可以进入

那这里其实就比较明白了,模拟器如果是eng版本,那么就肯定可以进入,手机一般是userdebug版本验证一下是否模拟器为eng版本:

确实看到是eng再看看手机是不是userdebug:

好的上面就解释了为啥aosp14上模拟器和手机不同差异补充一点jdwq是啥?
可以参考这里:https://baike.baidu.com/item/JDWP/8858707?fr=ge_ala
其实就是Java 调试线协议(JDWP)
本文章更多详细代码和资料需要购买课程获取 hal+perfetto+surfaceflingerhttps://mp.weixin.qq.com/s/LbVLnu1udqExHVKxd74ILg

私聊作者+v(androidframework007)
其他课程七件套专题:

点击这里 https://mp.weixin.qq.com/s/Qv8zjgQ0CkalKmvi8tMGaw
视频试看:网页链接