Vane's Blog

安卓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跨进程通信,代码阅读性不好,维护成本偏高 其他方式,比如本地文件存储 上面的方式或多或...

Android消息机制-Handler源码分析

1 概述 Android的消息机制简单来说指的是Handler与MessageQueue、Message和Looper完成一个体系机制,它的使用很简单,Handler消息机制用于同进程的线程间通信。通过它可以轻松的将一个任务切换到Handler所在的线程去执行,我们用的最多的地方也就是Handler刷新UI的功能,其实,它还有很多用途,比如子线程中进行消耗的I/O操作,读取文件等,而我们用...

关于Handler的几个问题

1 概述 先思考几个问题: 更新ui为什么只能在ui线程 线程如何创建handler Looper 死循环为什么不会导致应用卡死,会消耗大量资源吗? 子线程有哪些更新UI的方法 2 更新ui为什么只能在ui线程 其实并不是所有情况都只能在ui线程中更新ui,例如在onCreate()、onStart()和onResume()方法中启动子线程更新ui,是可以正常更新...

Android O Binder系列-Binder设计原理(非原创)

一. 前言 这篇文章我酝酿了很久,参考了很多资料,读了很多源码,却依旧不敢下笔。生怕自己理解上还有偏差,对大家造成误解,贻笑大方。又怕自己理解不够透彻,无法用清晰直白的文字准确的表达出 Binder 的设计精髓。直到今天提笔写作时还依旧战战兢兢。 Binder 之复杂远远不是一篇文章就能说清楚的,本文想站在一个更高的维度来俯瞰 Binder 的设计,最终帮助大家形成一个完整的概念。对于应...