安卓/aosp14上userdebug版本无法进行as调试debug问题

背景:

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

因为马哥这边暂时没有拿实体机去进行测试,一直也没有注意是否有这个问题,但是在模拟器上测试确实是好的,是可以展示出来的相关的java进程。
在这里插入图片描述
即总结一下相关问题情况:
as展示的debug进程列表显示
aosp13手机上 正常展示
aosp13模拟器 正常展示
aosp14手机上 无法展示

aosp14模拟器 正常展示

那么其实疑问就有两个就是13升级14以后手机为啥没有了,还有就是为啥模拟器就可以有。

解决方法:

先直接上解决方法后面再解释原理:

方法1

执行setprop persist.debug.dalvik.vm.jdwp.enabled 1

test@test:~/disk2/aosp14$ adb shell setprop persist.debug.dalvik.vm.jdwp.enabled 1
test@test:~/disk2/aosp14$ adb reboot

重启后查看:
在这里插入图片描述

方法2

直接修改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+surfaceflinger
https://mp.weixin.qq.com/s/LbVLnu1udqExHVKxd74ILg
在这里插入图片描述

私聊作者+v(androidframework007)

其他课程七件套专题:在这里插入图片描述
点击这里
https://mp.weixin.qq.com/s/Qv8zjgQ0CkalKmvi8tMGaw

视频试看:
https://www.bilibili.com/video/BV1wc41117L4/

  • 21
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千里马学框架

帮助你了,就请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值