Vane's Blog

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包...

深入浅出理解Java注解

1 Java注解简介 Java 注解(Annotation)是 JDK5.0 引入的一种注释机制。Java 语言中的类、方法、变量、参数和包等都可以被注解。和 Javadoc 不同,Java 注解可以通过反射获取标注内容。在编译器生成类文件时,注解可以被嵌入到字节码中。Java 虚拟机可以保留注解内容,在运行时可以获取到注解内容 ,也支持自定义 Java 注解。简单来说,可以将java注解...

开源库学习之EventBus

1 常规事件传递 常用的事件传递方式有以下几种: Intent意图,跳转+传参(局限性很大) Handler,通常用来更新主线程UI,使用不当容易出现内存泄露 Interface接口,仅限于同一线程中数据交互 BroadCastReceiver,有序广播+无序广播 AIDL跨进程通信,代码阅读性不好,维护成本偏高 其他方式,比如本地文件存储 上面的方式或多或...