Android开发高手课
张绍文
前微信高级工程师,Tinker负责人
立即订阅
12609 人已学习
课程目录
已完结 61 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 焦虑的移动开发者该如何破局?
免费
导读 (1讲)
导读 | 如何打造高质量的应用?
模块一 高质量开发 (25讲)
01 | 崩溃优化(上):关于“崩溃”那些事儿
02 | 崩溃优化(下):应用崩溃了,你应该如何去分析?
03 | 内存优化(上):4GB内存时代,再谈内存优化
04 | 内存优化(下):内存优化这件事,应该从哪里着手?
05 | 卡顿优化(上):你要掌握的卡顿分析方法
06 | 卡顿优化(下):如何监控应用卡顿?
06补充篇 | 卡顿优化:卡顿现场与卡顿分析
07 | 启动优化(上):从启动过程看启动速度优化
08 | 启动优化(下):优化启动速度的进阶方法
09 | I/O优化(上):开发工程师必备的I/O优化知识
10 | I/O优化(中):不同I/O方式的使用场景是什么?
11 | I/O优化(下):如何监控线上I/O操作?
12 | 存储优化(上):常见的数据存储方法有哪些?
13 | 存储优化(中):如何优化数据存储?
14 | 存储优化(下):数据库SQLite的使用和优化
15 | 网络优化(上):移动开发工程师必备的网络优化知识
16 | 网络优化(中):复杂多变的移动网络该如何优化?
17 | 网络优化(下):大数据下网络该如何监控?
18 | 耗电优化(上):从电量优化的演进看耗电分析
19 | 耗电优化(下):耗电的优化方法与线上监控
20 | UI 优化(上):UI 渲染的几个关键概念
21 | UI 优化(下):如何优化 UI 渲染?
22 | 包体积优化(上):如何减少安装包大小?
23 | 包体积优化(下):资源优化的进阶实践
24 | 想成为Android高手,你需要先搞定这三个问题
模块二 高效开发 (9讲)
25 | 如何提升组织与个人的研发效能?
26 | 关于编译,你需要了解什么?
27 | 编译插桩的三种方法:AspectJ、ASM、ReDex
28 | 大数据与AI,如何高效地测试?
29 | 从每月到每天,如何给版本发布提速?
30 | 数据评估(上):如何实现高可用的上报组件?
31 | 数据评估(下):什么是大数据平台?
32 | 线上疑难问题该如何排查和跟踪?
33 | 做一名有高度的移动开发工程师
模块三 架构演进 (9讲)
34 | 聊聊重构:优秀的架构都是演进而来的
35 | Native Hook 技术,天使还是魔鬼?
36 | 跨平台开发的现状与应用
37 | 移动开发新大陆:工作三年半,移动开发转型手游开发
38 | 移动开发新大陆:Android音视频开发
39 | 移动开发新大陆: 边缘智能计算的趋势
40 | 动态化实践,如何选择适合自己的方案?
41 | 聊聊Flutter,面对层出不穷的新技术该如何跟进?
42 | Android开发高手课学习心得
练习Sample跑起来 (8讲)
练习Sample跑起来 | 热点问题答疑第1期
练习Sample跑起来 | 热点问题答疑第2期
练习Sample跑起来 | 热点问题答疑第3期
练习Sample跑起来 | 热点问题答疑第4期
练习Sample跑起来 | ASM插桩强化练习
练习Sample跑起来 | 唯鹿同学的练习手记 第1辑
练习Sample跑起来 | 唯鹿同学的练习手记 第2辑
练习Sample跑起来 | 唯鹿同学的练习手记 第3辑
特别放送 (7讲)
Android JVM TI机制详解(内含福利彩蛋)
专栏学得苦?可能是方法没找对
专栏学得苦?可能你还需要一份配套学习书单
Native下如何获取调用栈?
聊聊Framework的学习方法
Android工程师的“面试指南”
程序员修炼之路 | 设计能力的提升途径
结束语 (1讲)
结束语 | 移动开发的今天和明天
Android开发高手课
登录|注册

聊聊Framework的学习方法

陆晓明 2019-03-12
大家好,我是陆晓明,现在在一家互联网手机公司担任 Android 系统开发工程师。很高兴可以在极客时间 Android 开发高手课专栏里,分享一些我在手机行业 9 年的经验以及学习 Android 的方法。
今天我要跟你分享的是 Framework 的学习和调试的方法。
首先,Android 是一种基于 Linux 的开放源代码软件栈,为广泛的设备和机型而创建。下图是 Android 平台的主要组件
从图中你可以看到主要有以下几部分组成:
Linux 内核
Android Runtime
原生 C/C++ 库
Java API 框架(后面我称之为 Framework 框架层)
系统应用
我们在各个应用市场看到的,大多是第三方应用,也就是安装在 data 区域的应用,它们可以卸载,并且权限也受到一些限制,比如不能直接设置时间日期,需要调用到系统应用设置里面再进行操作。
而我们在应用开发过程中使用的四大组件,便是在 Framework 框架层进行实现,应用通过约定俗成的规则,在 AndroidMainfest.xml 中进行配置,然后继承对应的基类进行复写。系统在启动过程中解析 AndroidMainfest.xml,将应用的信息存储下来,随后根据用户的操作,或者系统的广播触发,启动对应的应用。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《Android开发高手课》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(22)

  • 以前总以为调试源码需要下载源代码,编译工程,今天才知道原来还可以这样,新技能get√
    2019-03-12
    12
  • Dimple
    我就是有个毛病,遇到难的,更底层的东西总想着绕过去,而不是迎头而上,所以很多时候不能很好的解决问题。惧怕看源码,调试,到现在不一样了,我也知道很多高手都是能轻松看源码和调试,所以我也试着改变自己了

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

    2019-03-12
    7
  • 代码GG陆晓明
    楼上说的官方是在8.1,需要自己切换分支,下载9.0的就行了。 国内的可以先使用清华镜像下载,下载好了切换到9.0的代码上。

    有问题欢迎在官方安卓进阶开发微信群@ 我,随时等待大家的交流。
    2019-03-12
    1
    6
  • 代码GG陆晓明
    如果调试某个具体的流程,就将关联的文件放到对应的包名下即可。找对你要调试的进程,就可以在这些文件的具体方法下断点,进行调试跟踪。

    当发现没有调试上的时候,可以确定下是否源码不匹配?是否调试的进程不对(可以通过干掉你调试的进程,看看是否你调试的东西会挂掉,当然systemserver干掉手机就软重启啦。你想调试systemserver的启动过程,倒是可以这么干)在调试的过程中,使用源码阅读工具,将相关联的代码放入环境,在可疑地方,或者方法调用的地方设断点,做个简单判定即可,然后使用多个断点的设定,来卡住具体走到哪个流程,在断住之后,使用堆栈回溯,看看调用顺序,帮你梳理整个流程。
    2019-03-12
    6
  • 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
    1
    5
  • 代码GG陆晓明
    看到很多朋友留言,让我感觉受宠若惊。不时在看着留言又有哪些问题,想给大家更好的解答。
    极客没有专门针对一条留言回复的功能,导致回复的有些乱。
    如果有机会,欢迎大家加我微信,帮你解答调试中的任何疑问。
    再次感谢!
    我的微信

    code_gg_boy

    2019-03-13
    3
  • wang_acmilan
    支持明哥,前排占座。调试framework是系统工程师必备技能。
    2019-03-12
    3
  • tt716
    有一个问题,如何能下到与genymotion中镜像对应的源码呢?不然debug的时候有的行会对不上
    2019-03-12
    2
  • 河里的枇杷树、
    豁然开朗啊
    2019-11-07
  • 想不出名字
    有什么好的framework的书介绍吗?framework的资源好难找
    2019-09-15
  • 以前一直以为只有对应源码,对应手机版本才能调试 framework。这时才恍然大悟,可以用 Genymotion,加官方代码
    2019-09-05
  • Jiantao
    模拟器+对应sdk版本源码+调试进程 ,就可以debug了。感谢分享。
    2019-05-18
  • abero
    真机可以调试源码吗
    2019-04-29
  • h波
    我在实际操作中,在 Attach debugger to Android process 中找不到 system_process 这个进程,这是怎么回事呀
    2019-03-28
    2
  • 张曦
    涨姿势,支持明哥!
    2019-03-28
  • 一片羽毛
    回去实验下
    2019-03-18
  • seven
    🐮🐮🐮
    赞了收藏再说!
    2019-03-13
  • HI
    长见识了。。不过对于native的函数还是挺麻烦的,不知道是否有好的办法
    2019-03-12
  • 奚岩
    文中提到的到 androidxref 下载的源码,是一个个下载么,怎么全部下载呢?
    官方的 aosp 网站( https://source.android.com/setup/build-numbers.html#source-code-tags-and-builds )最新的是 8.1 的。
    2019-03-12
  • 刘伟
    这两天遇到一个问题:
    framework.jar 应该就是framework的源码,但是这两天我遇到一个崩溃,这个崩溃打印出来的线程调用栈 和 framework.jar 中反编译的源码不一样,这是为什么呢?

    这个 framework.jar 是我从出现崩溃的手机上导出的







    2019-03-12
收起评论
22
返回
顶部