Android 开发高手课
张绍文
前微信高级工程师,Tinker 负责人
52722 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 62 讲
导读 (1讲)
模块一 高质量开发 (25讲)
Android 开发高手课
15
15
1.0x
00:00/00:00
登录|注册

聊聊Framework的学习方法

调试其他系统服务线程
调试TextView控件
调试SystemServer进程
init和Zygote的工作原理
ART虚拟机的工作原理
Launcher的启动过程
各个服务线程的创建过程
SystemServer的创建
Android的启动过程
Linux操作系统
NotificationManager的notify发送系统通知
ActivityManager的getRunningAppProcesses方法
TextView、Button控件
节省学习时间成本
快速掌握流程
调试方法
调试环境的建立
学习内容
直接联调
打Log和打堆栈
直接阅读源码
阅读书籍
实现的功能
应用开发中调用的系统方法的内部实现
系统应用
Java API框架(Framework框架层)
原生C/C++库
Android Runtime
Linux内核
调试分析的重要性
调试Framework的Java部分
学习方法
Framework框架层
Android平台组成
Framework的学习方法
参考文章

该思维导图由 AI 生成,仅供参考

大家好,我是陆晓明,现在在一家互联网手机公司担任 Android 系统开发工程师。很高兴可以在极客时间 Android 开发高手课专栏里,分享一些我在手机行业 9 年的经验以及学习 Android 的方法。
今天我要跟你分享的是 Framework 的学习和调试的方法。
首先,Android 是一种基于 Linux 的开放源代码软件栈,为广泛的设备和机型而创建。下图是 Android 平台的主要组件
从图中你可以看到主要有以下几部分组成:
Linux 内核
Android Runtime
原生 C/C++ 库
Java API 框架(后面我称之为 Framework 框架层)
系统应用
我们在各个应用市场看到的,大多是第三方应用,也就是安装在 data 区域的应用,它们可以卸载,并且权限也受到一些限制,比如不能直接设置时间日期,需要调用到系统应用设置里面再进行操作。
而我们在应用开发过程中使用的四大组件,便是在 Framework 框架层进行实现,应用通过约定俗成的规则,在 AndroidMainfest.xml 中进行配置,然后继承对应的基类进行复写。系统在启动过程中解析 AndroidMainfest.xml,将应用的信息存储下来,随后根据用户的操作,或者系统的广播触发,启动对应的应用。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文详细介绍了学习和调试Android Framework的方法和技巧。首先,作者解释了Android平台的组成,包括Linux内核、Android Runtime、原生C/C++库、Java API框架和系统应用。然后,讨论了学习Framework的方法,包括阅读书籍、直接阅读源码、打Log和打堆栈以及直接联调实时便捷。接着,分享了学习Framework的建议,包括学习Linux操作系统知识、Android启动过程、SystemServer的创建、各个服务线程的创建过程等。此外,文章还介绍了调试Framework的Java部分和C++部分的方法,包括在Android Studio中进行调试和调试系统服务和TextView控件的具体步骤。整体而言,本文为Android开发者提供了系统学习和调试Framework的方法和技巧,帮助他们快速定位、修复问题。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Android 开发高手课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(23)

  • 最新
  • 精选
  • 程序员小跃
    我就是有个毛病,遇到难的,更底层的东西总想着绕过去,而不是迎头而上,所以很多时候不能很好的解决问题。惧怕看源码,调试,到现在不一样了,我也知道很多高手都是能轻松看源码和调试,所以我也试着改变自己了

    作者回复: 很多时候是绕不过去的,或者不深入底层是找不到优化的方法

    2019-03-12
    9
  • 以前总以为调试源码需要下载源代码,编译工程,今天才知道原来还可以这样,新技能get√
    2019-03-12
    23
  • 品牌运营|陆晓明
    如果调试某个具体的流程,就将关联的文件放到对应的包名下即可。找对你要调试的进程,就可以在这些文件的具体方法下断点,进行调试跟踪。 当发现没有调试上的时候,可以确定下是否源码不匹配?是否调试的进程不对(可以通过干掉你调试的进程,看看是否你调试的东西会挂掉,当然systemserver干掉手机就软重启啦。你想调试systemserver的启动过程,倒是可以这么干)在调试的过程中,使用源码阅读工具,将相关联的代码放入环境,在可疑地方,或者方法调用的地方设断点,做个简单判定即可,然后使用多个断点的设定,来卡住具体走到哪个流程,在断住之后,使用堆栈回溯,看看调用顺序,帮你梳理整个流程。
    2019-03-12
    11
  • bytecode
    调试Android Framework的Java部分代码,以调试源码android-28为例,需要一个API 28的模拟器配合使用。 1、下载源码 下载源码方式很多,由于调试Framework只需要java代码即可,这里使用Android Studio的SDK Manager下载android-28为例,sdk/sources下看到android-28源码。 2、新建一个项目,包名cn.test.demo,避免com开头是因为源码有com,等下拷贝源码是避免重复。 3、拷贝源码到项目的java目录下。 4、新建一个与源码对应的模拟器。 5、启动模拟器,选择debug的进程。 6、选择某一个源码类进行调试。 更多查看:https://github.com/libill/DebugAndroidFramework
    2019-03-15
    2
    8
  • 品牌运营|陆晓明
    楼上说的官方是在8.1,需要自己切换分支,下载9.0的就行了。 国内的可以先使用清华镜像下载,下载好了切换到9.0的代码上。 有问题欢迎在官方安卓进阶开发微信群@ 我,随时等待大家的交流。
    2019-03-12
    1
    7
  • 品牌运营|陆晓明
    看到很多朋友留言,让我感觉受宠若惊。不时在看着留言又有哪些问题,想给大家更好的解答。 极客没有专门针对一条留言回复的功能,导致回复的有些乱。 如果有机会,欢迎大家加我微信,帮你解答调试中的任何疑问。 再次感谢! 我的微信 code_gg_boy
    2019-03-13
    1
    3
  • tt716
    有一个问题,如何能下到与genymotion中镜像对应的源码呢?不然debug的时候有的行会对不上
    2019-03-12
    3
  • wang_acmilan
    支持明哥,前排占座。调试framework是系统工程师必备技能。
    2019-03-12
    3
  • OF
    我去,过了两年才看到这个,两年白瞎了
    2021-08-02
  • 河里的枇杷树、
    豁然开朗啊
    2019-11-07
收起评论
显示
设置
留言
23
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部