獨孤碼農

毕生求一败而不可得 终埋剑于剑冢 诚寂寥难堪也

Android10系统架构和学习总纲

本文为Android10系统架构和学习总纲,会分类列出博主学习android10的所有博文,方便大家查阅

一.Android系统架构 Android系统架构分为五层,从上到下依次是应用层、应用框架层、系统运行库层、硬件抽象层和Linux内核层,下图是一张官网经典的架构分层图 应用层 系统内置的应用程序以及非系统级的应用程序都是属于应用层。负责与用户进行直接交互,通常都是用Java进行开发的。 应用框架层(Java Framework) 应用框...

Android源码查看和下载

汇总一下android源码下载和在线查看的网站和方法

本文最后更新于 2021-07-25 更新内容:删除了访问不了的网站,更新网站截图,添加新的资源网站    学习研究android系统,最直接最好的方法就是阅读源码(Read The Fucking Source Code),本篇教程汇总一下能够查看android源码的网站和下载源码的方法 一 在线查看 https://source.android.com/source/ 首...

Android P 以上隐藏API的访问方法

谷歌从Android P 开始引入了针对非SDK接口(俗称为隐藏API)的使用限制。这是继 Android N上针对NDK中私有库的链接限制之后的又一次重大调整。

一,前言 谷歌从Android P 开始引入了针对非SDK 接口(俗称为隐藏API)的使用限制。这是继 Android N上针对NDK中私有库的链接限制之后的又一次重大调整。从今以后,不论是native层的NDK还是 Java层的SDK,我们只能使用Google提供的、公开的标准接口。这对开发者以及用户乃至整个Android生态,当然是一件好事。但这也同时意味着Android上的各种黑科技有...

MTK平台如何添加SUPL证书

最近公司基于MTK平台启动了一个新项目,主要销往海外,需要配置一下海外的运营商SUPL证书,在此记录下配置流程

前言 最近公司基于MTK平台启动了一个新项目,主要销往海外,需要配置一下海外的运营商SUPL证书,(不知道SUPL是什么的同学可以自行百度,这里不多做介绍),每个平台的SUPL证书配置的方法都不一样,高通,展锐,MTK各有各的方法,之前没有接触过这一块,经过与MTK的沟通加上自己的摸索终于搞定了证书添加,在此做个记录,以备后用。 一,加密处理 MTK平台的SUPL证书是要经过加密处理后才能添...

Android10 分区存储分析

要理解Android 10 的分区存储(Scoped storage),我们必须要将Android存储梳理清楚。本篇文章就来学习一下

Google 为了更好的保护用户数据并限制设备冗余文件增加,在 Android 10 版本变更了设备外部存储访问方式,外部存储新特性称为分区存储(Scoped Storage)。最近项目需要升级到Android10 (SDK 29),但是由于一些概念和升级后的方法还不太清楚,所以感觉有必要整体梳理一遍。 一、Android 存储目录 要理解 Android 10 的分区存储(...

Android12新版本终于发布了

Android12于2021年5月19日凌晨发布,按照惯例来看看都有哪些新特性吧

前言 美国时间2021.05.18~2021.05.20,时隔两年的2021 Google I/O大会以线上直播的形式重新归来。 Android 12 是Google有史以来最具雄心的版本之一,我们致力于创造一套能适应您的需求的全新用户界面,提高性能,同时将隐私和安全置于核心。对于开发者来说,我们为大家提供了更多的工具,方...

Android10 Binder机制10-架构总结

本文对Binder机制进行一个最终总结,从不同角度阐述一下Binder机制

1.Binder架构 下面将从不同的角度对binder进行描述: 从IPC角度:Binder是Android中一种跨进程通信方式,这种通信方式是Android独有的; 从Android APP层:Binder是客户端和服务端进行通信的媒介,当bindService的时候,服务端就会返回一个包含服务端业务调用的Binder对象,通过这个Binder对象,客户端就可以获取服务端提供的服务或者数...

Android10 Binder机制9-全面理解通信架构

本文从Java framework到Native,再到Linux Kernel,全面分析Binder通信架构.

一. 概述 1.1 Binder架构分层 Android内核是基于Linux系统, 而Linux现存多种进程间IPC方式:管道, 消息队列, 共享内存, 套接字, 信号量, 信号. android选择Binder进行进程间通讯的原因,前面文章有分析过,此处不再赘述 Binder采用的是分层架构设计, 每一层都有其不同的功能: Java应用层: 对于上层应用通过调用AMP...

Android10 Binder机制8-驱动层分析

Binder驱动是Android专用的,但底层的驱动架构与Linux驱动一样。binder驱动在以misc设备进行注册

一、概述 Binder驱动是Android专用的,但底层的驱动架构与Linux驱动一样。binder驱动在以misc设备进行注册,作为虚拟字符设备,没有直接操作硬件,只是对设备内存的处理,主要是驱动设备的初始化(binder_init),打开(binder_open),映射(binder_mmap),数据操作(binder_ioctl)。 通过init(),创建/dev/binder设备节...

Android10 Binder机制7-线程池管理

Binder线程创建与其所在进程的创建中产生,Java层进程的创建都是通过Process.start()方法

一. 概述 Android系统启动完成后,ActivityManager, PackageManager等各大服务都运行在system_server进程,app应用需要使用系统服务都是通过binder来完成进程之间的通信,那么对于binder线程是如何管理的呢,又是如何创建的呢?其实无论是system_server进程,还是app进程,都是在进程fork完成后,便会在新进程中执行onZyg...

Android10 Binder机制6-Framework层分析

binder在framework层,采用JNI技术来调用native(C/C++)层的binder架构,从而为上层应用程序提供服务

一、概述 1.1 Binder架构 binder在framework层,采用JNI技术来调用native(C/C++)层的binder架构,从而为上层应用程序提供服务。 看过binder系列之前的文章,我们知道native层中,binder是C/S架构,分为Bn端(Server)和Bp端(Client)。对于java层在命名与架构上非常相近,同样实现了一套IPC通信架构。 framew...

Android10 Binder机制5-绑定服务

本篇文章分析下bindService流程,从客户端调用bindService到服务器端通过ServiceConnected对象返回代理类给客户端

一、概述 1.1 Binder IPC原理 Binder通信采用C/S架构,包含Client,Server,ServiceManager以及binder驱动,其中ServiceManager用于管理系统中的各种服务,下面是以AMS服务为例的架构图: 无论是注册服务还是获取服务的过程都需要ServiceManager,此处的ServiceManager是指Native层的ServiceMan...