有时候我们为了搞懂Android系统组件的运行原理,需要查看系统的源代码,但是如果我们不仅能看源码,要是还能调试,岂不是更好更方便。

所以,我们就说下如何调试系统源代码。其实很简单的了。

1.确认自己手机的API Level

这个很简单了,就是确定自己手机系统的版本号,然后下载对应的源码,如果手机系统的版本和源码的版本对不上,那么debug的时候很容易出现对应不上代码行数的问题,因为每个版本的源码都可能有更新。

2.用Android Studio自带的SDK Manager下载对应版本的源码

“Tools” –> “Android” –> “SDK Manager”

如下图:

注意1

21. 右下角的 "Show Package Details" 请勾选上

2. 在Android 7.1.1 (Nougat)下面有一个选项 "Sources For Android 25" ,这个就是我们要下载的源码,请选中下载

3.还有最重要的一点,compileSdkVersion

compileSdkVersion,是用来告诉Gradle用哪个Android SDK版本来编译APK,所以这里的compileSdkVersion也必须和第一步中你手机的API Level保持一致,否则,你在IDE上用到的Android SDK的源码和你的手机系统的版本不一致,就会出现调试的代码行数对不上的问题。

这里还有一点说明一下,当你查看源码的时候,有这样一个路径,如下图:

这里我们的compileSdkVersion是25,所以查看的源码路径上是/android-sdk-linux/sources/android-25,注意这里的android-25,而且ViewGroup.java显示的也是普通java文件的样子,现在给一个错误的例子,我们选择android-23的ViewGroup.java,显示的却是下图:

很容易看到不同的地发

4.最后一部,加上断点,attach上进程,就可以愉快的调试源码了

这里和我们调试普通代码就是一样的了。经过上面的操作,Android源码就像我们添加的一个库一样。

补充

刚开始我是用Nexus 6P来调试的,因为是谷歌的亲儿子,后来用同样的方法试了华为的手机,发现也可以,所以虽然一些第三方ROM有很多更改的地方,但对一些基本的FrameWork应该是没啥改动的,改的更多的应该是桌面啊这些,但这些已经属于Application层了,现在给张Android 体系结构图。

android 网络调试 源代码,一个步骤教你调试Android系统源代码相关推荐

  1. android最新框架,XUpdate 一个轻量级、高可用性的Android版本更新框架

    XUpdate 一个轻量级.高可用性的Android版本更新框架.赶紧点击使用说明文档,体验一下吧! 特点 支持post和get两种版本检查方式,支持自定义网络请求. 支持设置只在wifi下进行版本更 ...

  2. android资源编译失败,在android studio中打开一个新项目时,Android资源编译失败

    用我的android studio打开新项目时出现此错误 Android资源编译失败输出:C:\ Projects \ Popular2 \ app \ src \ main \ res \ draw ...

  3. c语言成绩查询系统源代码,C语言版简单成绩查询系统源代码概要.doc

    C语言版简单成绩查询系统源代码概要 // // main.c // xueshengchengji // // Created by lxb on 13-9-16. // Copyright (c) ...

  4. android原生组件,XUI: 一个简洁而优雅的Android原生UI框架,解放你的双手!

    XUI 一个简洁而又优雅的Android原生UI框架,解放你的双手!还不赶紧点击使用说明文档,体验一下吧! 涵盖绝大部分的UI组件:TextView.Button.EditText.ImageView ...

  5. gossip 区块链_源代码: 一个最小化的区块链系统

    近期有个国内著名技术协会的约稿,正好向技术圈分享一下我对区块链系统的拙见.我发现一件有趣的事情,即使是有计算机背景,懂编程的同学,都也不怎么清楚区块链到底是怎么回事.今天这里,我打算用计算机语言和大家 ...

  6. Android常用ui,XUI: 一个简洁而优雅的Android原生UI框架,解放你的双手!

    XUI 一个简洁而又优雅的Android原生UI框架,解放你的双手!还不赶紧点击使用说明文档,体验一下吧! 涵盖绝大部分的UI组件:TextView.Button.EditText.ImageView ...

  7. android iot代码设计,一个简单好用的Android Tab 设计与实现

    Tab在Android导航中的使用非常频繁,很多应用中都能找到它的身影,笔者在观察的过程中发现,在大部分情况 下用到的无非就下面几种: [文字居中] .[图片居中].[图片在上|文字在下(共同居中)] ...

  8. android最简单的更换主题,教你更换Android手机主题

    买了Android手机的朋友肯定都希望手机桌面拥有一个好看的手机主题,但是具体操作却不会,下面就给大家简单教程. 目前在android系统上常见的主题软件有:open home.ADW launche ...

  9. android网络请求线程池,利用线程池实现Android客户端的http网络数据请求工具类

    该工具类值只实现了HTTP的get方法,参考get方法可轻松实现post.put.delete等方法,下面是get方法的实现 public class SimpleHttpClient { priva ...

最新文章

  1. OpenCV(十五)边缘检测1 -- Sobel算子(一阶微分算子,X、Y方向边缘检测)
  2. 永洪Desktop关于MAC系统使用问题
  3. CTF-杂项16进制字符串类型的题目
  4. 【ML】 李宏毅机器学习二:Logistic Regression
  5. 使用Windows10 software center升级版本1909
  6. Qt+OpenCV打开视频文件并在窗口界面上显示
  7. TensorFlow 2.0 - TFRecord存储数据集、@tf.function图执行模式、tf.TensorArray、tf.config分配GPU
  8. db2 删除索引_MYSQL进阶——索引
  9. Java-虚拟机-类加载(装载连接初始化)
  10. 使用eclipse新建一个SWT工程
  11. 谭浩强C语言第五版,学习笔记【7500字】【原创】
  12. 外贸常用术语_外贸常用句子
  13. k8s安装 从k8s.gcr.io 拉取镜像失败
  14. 9、Python xlsxwriter模块
  15. 枚举报错 No enum constant XX 处理方法
  16. IAR使用方法建立工程文件超详细操作步骤
  17. String求求你别秀了
  18. (开源免费)Python-Gui/PyQt-PySide精美动态登录模板
  19. windows系统搜索本地文件缓慢怎么办?
  20. 王艳 201771010127《面向对象程序设计(Java)》第四周学习总结

热门文章

  1. jQuery动画---自定义动画animate()
  2. PyQt5 笔记(04):主窗口卡死问题
  3. SpringMVC和Dubbo的整合
  4. Essential C++中文版 前言
  5. Flash Socket安全问题的全面解析 服务器端代码
  6. oracle 维护之Redo log file
  7. 喜讯不断,BCH又迎来两个代币发行方案
  8. topcoder srm 360 div1
  9. 普通(实例)方法和实例方法的定义和调用
  10. PHP 缓存插件之 Zend Opcache ( 取代 APC )