Android Framework学习起步

Android 系统栈

下图是google 给出的android 系统栈,从图上看Apps 以下 Hal层以上都是framework 的scope。但是平常解决问题的时候多多少少也会涉及到hal层的问题。

android stack from google

  • 简单来讲android系统完全基于linux系统,就像mac系统基于unix系统,个人感觉可以把android看成一个特殊的linux应用。

  • kernel以上android 有个hal层为了适配各个芯片厂商的定制化。

  • hal层往上有各种c 和 c++实现的lib支撑framework的业务。包括虚拟机ART 4.4之前版本是dalvik。ART
    是个重要角色,它实现了android 中java程序的执行。这块可以参看老罗的vm和art对比

  • javaAPI framework提供了android各种功能的api,为实现各种应用提供了接口。


FrameWork相关业务介绍

有个图整理一下自己的思路,干了这么多年framework,所涉及的领域基本都在这个图里。这个是一时兴起想到的,或许后续还可以再补上点什么。可以持续更新。

android framework think

  • Android Boot flow
  • SystemServer
  • common base
  • storage
  • security
  • recovery
  • other process

以上涉及的方面,后续的blog重介绍完成。

从几方面开启踏进Android之门

最近项目兄弟们的技术背景都是c c++初级入门,强烈感觉需要一次android基础介绍的培训,这样就继续写写这篇文章。
如何给一位初学者介绍android系统,想了如下几个方面,希望诸位能够快速上道。

在这里插入图片描述

Android 栈架构
  • Android是跑在linux上的一个特殊“应用”
  • Android应用一般用java编写,所以必须有给虚拟机现在最新版本上是art,4.4之前还是 Dalvik不管怎样都是解析java语言为可执行语言,两者区别是:dvm 是jit(just in time),art是aot(ahead of time)
Android 系统启动过程
  • 通过启动流程,基本的android守护进程和主要android进程都会牵涉出来。
Android 应用启动过程
  • Android应用启动会带出android 4大组建以及我认为android最需要了解的架构App-binder-systemServer 架构 AndroidThread主线程和systemServer进程还有zygote进程进行的一系列通信。
JVM DVM ART

jvm的作用
java很牛的一个特性就是跨平台,只要是用纯java写的代码,无论你是在windows linux macos上只要要安装 jvm java虚拟机就可以运行

DVM

Android 为了支持java语言,自己搞了一套虚拟机机制 Kitkat 4.4之前的叫Dalvik虚拟机( Dalvik Virtual Machine )KitKat的时候开始引入ART。

https://blog.csdn.net/weixin_42336002/article/details/80610555
在这里插入图片描述

.jar文件里面包含多个.class文件,每个.class文件里面包含了该类的常量池、类信息、属性等等。当JVM加载该.jar文件的时候,会加载里面的所有的.class文件,JVM的这种加载方式很慢,对于内存有限的移动设备并不合适。
而在.apk文件中只包含了一个.dex文件,这个.dex文件里面将所有的.class里面所包含的信息全部整合在一起了,这样再加载就提高了速度。.class文件存在很多的冗余信息,dex工具会去除冗余信息,并把所有的.class文件整合到.dex文件中,减少了I/O操作,提高了类的查找速度。

DVM中的应用每次运行时,字节码都需要通过即时编译器(JIT,just in time)转换为机器码,这会使得应用的运行效率降低。而在ART中,系统在安装应用时会进行一次预编译(AOT,ahead of time),将字节码预先编译成机器码并存储在本地,这样应用每次运行时就不需要执行编译了,运行效率也大大提升。

Android log分析方法

待续

Android 稳定性问题分析方法

待续

Android 性能问题分析方法

待续

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值