美文网首页
Android Studio 调试 Android Framew

Android Studio 调试 Android Framew

作者: 他晓 | 来源:发表于2020-11-15 19:38 被阅读0次

Android Studio 调试 Android Framework 层代码

QQ群:686809487

转自:https://blog.csdn.net/songjinshi/article/details/53020549/?utm_medium=distribute.pc_relevant.none-task-blog-title-6&spm=1001.2101.3001.4242

一、准备工作

1、下载最新的 Android Studio 版本

https://developer.android.com/studio/index.html

2、下载 Android 系统源码

这里比较灵活,可以下载公司内部机型的代码,也可以下载原生AOSP的代码

环境配置参考

https://source.android.com/source/initializing.html

源码下载参考

https://source.android.com/source/downloading.html

编译运行参考

https://source.android.com/source/building.html

全部编译整个代码工程,中间如果有什么问题可以参考

https://source.android.com/source

二、配置 Android Studio

1、配置 vm options
一个完成Android源码会非常大,所以为了避免导入和生成index时OOM,最好提前配置一下Android Studio的vm options,可以参考下图是我的配置 在这里插入图片描述
2、配置最大打开文件数
在导入过程中会同时打开非常多的文件,为了避免too many files open错误,提前在profile文件中配置一下打开文件的数量,我这里是配置的2048 在这里插入图片描述

三、创建 Android Framework 工程

整个Android源码全编成功之后,还需要编译idegen模块,用以生成Android studio的工程配置文件,对于高通有modem源码的项目这里有个坑,就是有一个hlos下的有一个android的软连接会链接到源码根目录,导致递归死循环,最终栈溢出而无法生成工程配置文件,所以需要删除这个软链接 在这里插入图片描述
1、单独编译 idegen 模块

Vincent$ mmm development/tools/idegen/

编译成功之后就生成了idegen.jar

host Java: idegen (out/host/common/obj/JAVA_LIBRARIES/idegen_intermediates/classes) Install: out/host/darwin-x86/framework/idegen.jar

2、运行 idegen 脚本

Vincent$ development/tools/idegen/idegen.sh 运行成功之后就会看到如下信息打出

Read excludes: 5ms Traversed tree: 85308ms

同时在源码的根目录下生成android.ipr等工程配置文件

3、提升导入代码的速度
对于不关注的代码目录,可以通过修改android.iml来去除无用的源码和相关目录,用来提升加载速度 在这里插入图片描述

四、导入和配置 Android Framework 工程

1、导入工程
打开Android Studio,然后找到根目录下生成的android.ipr文件并打开 在这里插入图片描述

耐心等待index建立,预计需要10分钟左右,根据硬件配置不同时间略有差异 [图片上传失败...(image-5dd3fa-1605440240626)]

2、配置工程

导入完成之后右上角会有一个提示 [图片上传失败...(image-eb3858-1605440240626)]

然后点击Configure

[图片上传失败...(image-9e7fcf-1605440240626)]

点击OK,然后点击左上角的Project并选择Project视图模式 在这里插入图片描述 然后按照下图进入工程配置 在这里插入图片描述 在这里插入图片描述 按照如下设置把JDK的classpath和sourcepath下的内容都删掉,使其能在debug时定位到项目中的源码 在这里插入图片描述 然后把Android SDK的classpath和sourcepath也删除,同时将Java SDK选为刚刚配置JDK1.8 在这里插入图片描述 设置Modules的依赖,将依赖中除了下图所示的之外全部删除 在这里插入图片描述 然后点击左下角的+选择Jars or directories添加framework相关的源码文件夹 在这里插入图片描述

点击OK,等待其建立index完成后工具栏的Attach debugger to Android process就会变成可点击状态

在这里插入图片描述

五、调试 Android Framework

上面的配置工作完成后就可以开始在线调试了,但是前提是手机中的ro.debuggable要为1,或者是userdebug,eng版本的系统软件

1、attach 到 system_process 进程
在这里插入图片描述
2、设置断点
成功attach后就可以打开想要设置断点的源码文件,然后在行号右边的空白处左键点击设置断点 在这里插入图片描述
3、查看运行时状态
设置完成后就可以操作手机,当代码运行到断点处就可以停下来,这时就可以查看运行时的状态,包括变量的值,backtrace等 在这里插入图片描述 还可以在watches窗口添加想要查看的表达式的值 在这里插入图片描述
4、获取 backtrace 快照
另外attach后,在不设置断点的情况下也可以实时的获取所有线程的backtrace的快照,作用类似于kill -3,但是只有Java层的trace 在这里插入图片描述

联系方式:

微信公众号 -->> 他晓 (欢迎加入)

相关文章

网友评论

      本文标题:Android Studio 调试 Android Framew

      本文链接:https://www.haomeiwen.com/subject/opfobktx.html