Vane's Blog

Binder十万个为什么

以提问的方式探讨 Android 中 Binder 机制。 1. 概述 大家都知道Binder是一种进程间通信机制, 在 Linux 中,Binder 被看做一个字符设备,Binder 驱动会为每个打开 Binder的进程在内核里分配一块地址空间,Client 向 Server 传递数据,其实就是将数据写道内核空间中 Server 的地址里面,然后通知Server去取数据。原理其...

Android添加系统服务访问驱动程序系列:添加framework层服务

基于Android 6.0源码,基于实操在Android系统中如何添加一个framework层的服务访问驱动程序。 1. 概述 在Android添加系统服务访问驱动程序系列:添加HAL层中我们为 驱动 mychar 是实现一个HAL层模块 operatechar。开发好 HAL 层模块后,我们需要在framework 层实现一个硬件访问服务 operate_char。硬件访问服务...

Android添加系统服务访问驱动程序系列:添加HAL层

基于Android 6.0源码,基于实操在Android系统中如何为驱动程序添加一个HAL层。 1. 概述 在Android添加系统服务访问驱动程序系列:添加驱动程序中我们实现了一个简单的读写字符设备驱动 mychar,该篇文章为 驱动 mychar 是实现一个HAL层。 Android 系统的HAL层(硬件抽象层)运行在用户空间中,它向下屏蔽硬件驱动模块的实现细节,向上提供硬件...

Android添加系统服务访问驱动程序系列:添加驱动程序

基于Android 6.0源码, 实操在Android系统中如何添加一个驱动程序。 1. 概述 开发一个驱动程序 mychar,mychar 是一个简单的字符设备驱动,Android 上层可以通过 read、write 对驱动进行读写操作,即写数据到 FIFO 和从 FIFO 读出写入的数据。 步骤如下: 编写内核驱动程序模块 修改内核 Kconfig 文件 修改...

Android安全机制之Permission权限应用篇

1. 概述 Android 是一个权限分隔的操作系统,这是利用 Linux 已有的权限管理机制,通过为每一个应用程序分配不同的 UID 和 GID , 从而使得不同的应用程序之间的私有数据和访问达到隔离的目的。与此同时, Android 还 在此基础上进行扩展,提供了 permission 机制,它主要是用来对应用程序可以执行的某些具体操作进行权限细分和访问控制。 permission 机...

安卓PMS模块之启动及解析APK流程(3)

基于Android 8.1源码, 分析PackageManagerService的启动过程 frameworks/base/services/java/com/android/server/SystemServer.java frameworks/base/services/core/java/com/android/server/SystemConfig.java framewo...

安卓PMS模块之APK签名及验证流程(2)

1. APK签名基础知识 在进行通信时,必须至少解决两个问题:一是确保消息来源的真实性,二是确保消息不会被第三方篡改。在安装Apk时,同样需要确保Apk来源的真实性以及Apk没有被第三方篡改。如何解决这两个问题呢?方法就是开发者对Apk进行签名:在Apk中写入一个具有唯一性的“指纹”。指纹写入以后,Apk中有任何修改,都会导致这个指纹无效,Android系统在安装Apk进行签名校验时就会不...

安卓PMS模块之安装APK(1)

1. 概述 一个 Android 应用安装到手机上大致分为四种情形: 系统应用,在设备首次启动时完成安装 通过 adb install 命令安装 系统自带的应用市场安装,如三星的应用商店 第三方应用安装或双击安装包,会启动系统应用引导安装 无论采用哪种安装方式,最终的安装过程都会走到 PackageManagerService,由这个类来完成一系列的工作。 Andr...

PackageInstaller安装APK流程

/packages/app/PackageInstaller /frameworks/base/core/java/android/content/pm 1. APK安装概述 Android应用最终是打包成.apk格式(其实就是一个压缩包),然后安装至手机并运行的。其中APK是Android Package的缩写。 安装APK的方式有以下几种: ...

APT注解器的使用

1 APT简介 APT是一种处理注释的工具,它对源代码文件进行检测找出其中的Annotation,根据注解自动生成代码。简单来说,可以通过APT,根据规则,帮我们生成代码、生成类文件。ButterKnife、Dagger、EventBus等开源库都是利用注解实现的。 java是结构体语言,如下例子所示: package com.vanelst.apt;//PackageElement包...