FuckingCode

-安卓系统- -源码分析- -linux编程- -设计模式-


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

Android系统HAL层驱动基础总结

发表于 2018-08-18 | 更新于 2018-08-22 | 分类于 HAL驱动 , 源码分析
本文字数: 8k | 阅读时长 ≈ 7 分钟

Android系统HAL层驱动实现原理是基于谷歌提供的框架来展开,从而更好的规避因底层使用linux内核开源核心代码的要求,同时因为其安卓本身遵循Apache Lincence协议,允许厂商修改而不必公开修改的源代码。本文章就其HAL层(硬件抽象层),主要介绍此框架的组成部分、原理框架以及调用流程,为后续的HAL驱动具体实现提供相关的理论基础。

阅读全文 »

Binder系统分析之SM大管家的获取流程

发表于 2018-07-30 | 更新于 2018-09-28 | 分类于 Binder
本文字数: 14k | 阅读时长 ≈ 13 分钟

之前介绍了Binder跨进程通信中AIDL文件的具体实现流程,之后又实现Native层、framework层Binder框架的具体使用范例。其使用规范都是基于底层设计好的框架之上,本章节就针对其框架,步步分析其实现流程背后的原理,对着代码一步一步追溯到源头,废话不多说,Fucking Code!

阅读全文 »

Binder系统分析之Native层、framework层使用

发表于 2018-07-16 | 分类于 Binder分析
本文字数: 18k | 阅读时长 ≈ 16 分钟

上篇文章中,我们详细的了解了AIDL的使用流程。其关键点在于对系统编译生成的AIDL生成中间文件中Binder类以及IBinder接口的实现。系统提供的这两个类很关键,下面我们分别从Native层以及framework实现一下自定义的Binder程序。

阅读全文 »

Binder系统分析之应用层AIDL的具体实现

发表于 2018-07-12 | 更新于 2018-07-16 | 分类于 Binder分析 , AIDL
本文字数: 24k | 阅读时长 ≈ 22 分钟

提及安卓的跨进程通信机制,那肯定非Binder机制莫属了!然而安卓为什么不采用原生linux提供的管道、消息队列、信号、secket以及共享内存呢?而是自己大费周章的写了一套自己的Binder跨进程通信机制,由此可见Binder通信机制的重要性。本人学习Binder后,感悟颇深。为了更好的理解,避免方便上层应用开发者直接看底层c实现难度太大,便拿其最直接的aidl文件实现跨进程开刀,庖丁解牛,由表及里,拨开云雾见天日!

阅读全文 »

Android源码编译之make流程分析

发表于 2018-06-27 | 更新于 2018-07-16 | 分类于 源码编译
本文字数: 18k | 阅读时长 ≈ 17 分钟

前面分别分析了安卓源码编译过程中 source 和 lunch 命令下的具体操作流程。其中source是向shell环境导入相关变量,lunch命令则是执行build/envsetup.sh文件中定义好的函数,与lunch函数相似,编译系统命令m(make),mm,mmm等命令也是其中定义好的方法,下面我们就来具体分析一下。

阅读全文 »

Android源码编译之lunch流程分析

发表于 2018-06-27 | 更新于 2018-07-16 | 分类于 Makefile , 源码编译
本文字数: 18k | 阅读时长 ≈ 16 分钟

通过之前介绍的source导入编译源码的相关配置,下面就进入了lunch操作。用户通过source build/envsetup.sh命令后,系统初始化相关变量环境工作,脚本提供一个lunch函数,让用户选择自己想要编译的版本分支,下面我们就来具体分析一下。

阅读全文 »

Android源码编译之source初始化环境分析

发表于 2018-06-25 | 更新于 2018-07-16 | 分类于 源码编译
本文字数: 6.1k | 阅读时长 ≈ 6 分钟

Android这个庞大的系统,采用的是自己的Android Makefile来进行编译的。在编译系统时,我们通常需要命令行 source build/envsetup.sh 导入相关环境变量,之后 lunch 选择自己想要编译的版本,最后 make 才可进行系统的全局编译。首先我们来分析source build/envsetup.sh的具体执行流程。

阅读全文 »

Andnroid系统odex优化加快开机速度

发表于 2018-06-25 | 更新于 2018-07-16 | 分类于 源码编译
本文字数: 4.1k | 阅读时长 ≈ 4 分钟

对于如何提高安卓6.0首次开机启动的时间,其关键就是打开系统的预编译odex优化开关。简而言之,就是将系统的jar包提前在服务器上根据相对应的平台进行预优化,对应的预装应用也从apk的class文件中优化得到odex文件从而加快首次开机PMS便利扫描apk包的时间。

阅读全文 »

源码分析之Launcher启动流程

发表于 2018-06-14 | 更新于 2018-07-16 | 分类于 源码分析
本文字数: 11k | 阅读时长 ≈ 10 分钟

之前分析了安卓开机启动流程,详细可以查看Zygote和SystemServer相关的博客。系统开机经由init进程拉起后,调用Zygote孵化器开启SystemServer服务,其中系统核心重要的服务都在SystemServer中加载完成,之后便进入各个服务的SystemReady状态。由此,我们从这里开始分析。

阅读全文 »

源码分析之智能指针RefBase

发表于 2018-06-13 | 更新于 2019-02-21 | 分类于 源码分析
本文字数: 26k | 阅读时长 ≈ 24 分钟

智能指针,是安卓为了照顾Java层代码,为C层适配的一种自动管理内存对象的方案。由于C层对象不能够像Java层代码一样由虚拟机自动释放,很容易造成内存泄漏等问题,其生命周期要求开发者自行管理,为了解决这个问题,安卓系统便引入了智能指针的概念。在我们了解它之后,对于源码的阅读,无疑将会变得更加轻松!

阅读全文 »
1234…8
Allies

Allies

一位由安卓应用向系统底层进阶的开发者。在这里,开始自己的打怪升级之路。Just do it!
75 日志
17 分类
59 标签
RSS
GitHub 微博 邮箱 掘金
Creative Commons
© 2017 – 2019 Allies | 693k | 10:30
由 Hexo 强力驱动 v3.8.0
|
主题 – NexT.Pisces v7.1.0