Android Studio在线调试Android Framework Java代码

一、准备工作

1、下载最新的Android Studio版本

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

当前最新的大版本是2.2

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分钟左右,根据硬件配置不同时间略有差异

2、配置工程

导入完成之后右上角会有一个提示

然后点击Configure

点击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

六、在线调试其他APP进程

细心的同学可能会想,通过上面的设置我是不是可以attach到其他APP进程,然后把相关源码添加到依赖里面并设置断点debug,或者在framework的公共代码处设置断点debug?答案是可以的,有心的同学可以自己探索一下。

时间: 2024-11-18 12:01:32

Android Studio在线调试Android Framework Java代码的相关文章

Android studio 使用Debugger问题(代码中含有ndk)

NDK NDK 是 Native Developmentit的缩写,是Google在Android开发中提供的一套用于快速创建native工程的一个工具. 使用这个工具可以很方便的编写和调试JNI的代码. NDK可从官网或AndroidDevTools(个人网站)下载. 1.出现错误: Error running app: Unable to open debugger port (localhost:8601): java.net.ConnectException "Connection re

Android Studio多渠道批量打包及代码混淆

一.批量打包 1.集成了友盟统计,并在AndroidManifest.xml中添加了如下代码 <meta-data android:name="UMENG_CHANNEL" android:value="${CHANNEL_VALUE}"/> 2.在app的build.gradle的android标签下添加如下代码: productFlavors { myapp {} _360 {} appchina {} hiapk {} } productFlavo

Android Studio启动报错Java 1.8 or later is required的解决方法

错误描述 在公司电脑上运行Android Studio 2.2已经有一段时间了,但是自己的笔记本上还是用的Android Studio 1.5,今天晚上下了一个Android Studio 2.2压缩包,解压后启动Android Studio 2.2就报错了,错误如下所示: Unsupported Java Version : Cannot start under Java 1.7.0_04-b22 : Java 1.8 or later is required. 分析错误 查看当前电脑的Jav

图文详解Android Studio搭建Android集成开发环境的过程_Android

有很长一段时间没有更新博客了,最近实在是太忙了,没有时间去总结,现在终于可以有时间去总结一些Android上面的东西了,很久以前写过这篇关于使用Android Studio搭建Android集成开发环境,不过一直没有发表出来,写这篇文章的目的是记录一下Android开发环境的搭建过程,这篇文章写得一般般,主要是记录了整个搭建过程,没什么技术含量,觉得有帮助的朋友就看一下! 一.Android Studio简单介绍 2013年GoogleI/O大会首次发布了Android Studio IDE(A

Android Studio查看Android 5.x源码的步骤详解_Android

关于Android Studio的好处我就不用说了,下面两点就足矣让你转投Android Studio了:      1.Android Studio是Google官方指定的,目前官网已经去掉了ADT, 大家可以在Android开发者官网 中进行查看,目前只有Android Studio提供下载了.      2.Google也表示ADT不再进行维护了. 转投Android Studio时大势所趋,网上关于如何使用Android Studio的帖子也是满天飞,所以我就不再啰嗦夸奖Android

Android Studio查看Android 5.x源码的步骤详解

关于Android Studio的好处我就不用说了,下面两点就足矣让你转投Android Studio了: 1.Android Studio是Google官方指定的,目前官网已经去掉了ADT, 大家可以在Android开发者官网 中进行查看,目前只有Android Studio提供下载了. 2.Google也表示ADT不再进行维护了. 转投Android Studio时大势所趋,网上关于如何使用Android Studio的帖子也是满天飞,所以我就不再啰嗦夸奖Android Studio了. 这

《Android App开发入门:使用Android Studio 2.X开发环境》——第 1章 使用 Android Studio 开发 Android App

第 1章 使用 Android Studio 开发 Android App 1-1 创建第一个 Android App 项目 1-2 在计算机的仿真器上执行 App 1-3 Android Studio 快速上手 1-4 Android 项目的构成 本章将介绍如何使用 Android Studio 集成开发环境开发 Android App.我们将先说明在 Android Studio 中如何添加.创建 Android App,接着说明如何将完成的程序( App)放在仿真器上执行与测试.让读者先体

android studio导入-android studio 导入android源码中的项目的问题

问题描述 android studio 导入android源码中的项目的问题 android studio 导入android源码中的项目的问题.android stufio如何导入android源码中的项目可以不出错,或者怎么修改,可以在android studio上正常使用.请手请指教 解决方案 如果你指的是导入Eclipse 的Project :http://ask.android-studio.org/?/explore/sort_type-new__category-19__day-0

Android被曝直接抄袭Java代码侵权

北京时间1月22日凌晨消息,美国专利博客网站FOSS Patents周五撰文称,在Android 2.2的源代码中发现了37个与Java代码中完全相同的文件. 任何人都可以从网上下载到Android 2.2的代码并对其检测.该博客作者弗洛安·穆勒(Florian Mueller)称,他发现Android中37份文件代码与Java 2标准版第5版中的代码完全相同.其中部分代码甚至还清楚地被Sun表明为"专有/机密". 穆勒称,"不管这些代码属于私有还是GPL协议,都不应该被甲骨