
Android进阶解密读书笔记
文章平均质量分 86
幻了风
这个作者很懒,什么都没留下…
展开
-
Android进阶解密读书笔记(十二)——热修复原理
总结一下so修复主要有两个方案:(1)将 so 补丁插入到 NativeLibraryElement 数组的前部,让 so 补丁的路径先被返回和加载(2)调用 System的load方法来接管 so 的加载入口原创 2023-02-22 21:56:43 · 399 阅读 · 0 评论 -
Android进阶解密读书笔记(十一)——理解 ClassLoader
定义一个自定义 ClassLoader 并继承抽象类 ClassLoader复写 findClass 方法,并在 findClass 方法中调用 defineClass 方法。原创 2022-08-28 17:16:27 · 731 阅读 · 0 评论 -
Android进阶解密读书笔记(十一)——Dalvik和ART
ART 的运行时堆的空间也会有不同的划分,默认是由4个Space 和多个辅助数据结构组成的;4个Space分别是 Zygote space、Allocation Space、Image Space 和 Large Object Space。Zygote Space、Allocation Space和 DVM 中的作用是一样的,Image Space 用来存放一些预加载类;ART会为那些主动请求的垃圾收集事件或者认为GC速度慢时才会打印日志,GC速度慢指的是GC暂停超过5ms或者GC持续时间超过100ms。.原创 2022-08-21 19:56:26 · 913 阅读 · 0 评论 -
Android进阶解密读书笔记(十)——Java虚拟机
一、Java虚拟机的执行流程Java虚拟机执行流程分为两大部分:编译时环境和运行时环境,当一个Java文件经过Java编译器编译后会生成class文件,这个class文件会由Java虚拟机来进行处理Java虚拟机与Java语言没有什么必然的联系,它只与特定的二进制文件:Class文件有关;因此无论任何语言只要能编译成Class文件就可以被Java虚拟机来处理二、Java虚拟机结构Java虚拟机结构包括运行时数据区域、执行引擎、本地库接口和本地方法😭,其中类加载子系统并不属于Java虚拟机的内原创 2022-08-14 16:24:24 · 832 阅读 · 0 评论 -
Android进阶解密读书笔记(九)——JNI原理
JNI是Java Native Interface的缩写,一般有以下情况会用到JNI:需要调用java语言不支持的依赖于操作系统平台特性的一些功能 为了整合一些以前的非java语言开发的系统 为了节省程序的运行时间,必须采用其他语言来提升运行的效率1、Native方法注册(1)静态注册...原创 2022-04-26 21:55:58 · 1605 阅读 · 0 评论 -
Android进阶解密读书笔记(八)——理解WindowManagerService
1、WMS的职责,主要有以下几点:窗口管理:WMS是窗口的管理者,它负责窗口的启动、添加和删除,另外窗口的大小和层级也是由WMS进行管理的。窗口管理的核心成员有DisplayContent、WindowToken和WindowState 窗口动画:窗口间进行切换时,使用窗口动画可以显得更炫一些,窗口动画由WMS的动画子系统来负责,动画子系统的管理者为WindowAnimator 输入系统的中转站:通过对窗口的触摸而产生触摸事件,InputManagerService(IMS)会对触摸事件进行处理,它原创 2022-04-13 21:09:30 · 483 阅读 · 0 评论 -
Android进阶解密读书笔记(七)——理解WindowManager
1、Window、WindowManager和WMSWindow是一个抽象类,具体的实现类为PhoneWindow,它对View进行管理 WindowManager是一个接口类,继承自接口ViewManager,用来管理Window的,它的实现类为WindowManagerImpl WindowManger会将具体的工作交给WMS来处理,WindowManager和WMS通过Binder来进行跨进程通信总的来说就是 WindowManger 将工作交给WMS来处理,并且对Window进行管理,也就原创 2022-04-09 11:05:03 · 564 阅读 · 0 评论 -
Android进阶解密读书笔记(六)——理解ActivityManagerService
Android 7.0 和 Android 8.0 对于 AMS 相关部分处理有较大的区别Android 7.0 的 AMS 家族主要有三个类 ActivityManager ActivityManager 是一个和 AMS 相关联的类,它主要对运行中的 Activity 进行管理,这些管理工作并不是由 ActivityManager 来处理的,而是交由 AMS 来处理的 ActivityManagerNative(AMN) AMN 是一个抽象类,它将功能交由它的原创 2021-11-10 18:00:00 · 2036 阅读 · 0 评论 -
Android进阶解密读书笔记(五)——理解上下文 Context
Context 的关联类 Context 意为上下文,是一个应用程序环境信息的接口 它的使用场景总的来说分为两大类: 使用 Context 调用方法,比如启动Activity、访问资源、调用系统级服务等 调用方法时传入 Context,比如弹出 Toast、创建 Dialog等 Activity、Service和Application都间接地继承自 Context,因此我们可以计算出一个应用程序进程中有多少个 Context,这个数量等于Activity和Serv原创 2021-10-29 17:13:56 · 1345 阅读 · 0 评论 -
Android进阶解密读书笔记(四)——四大组件的启动过程
根 Activity 的启动过程Activity 的启动分为两种,一种是根 Activity 的启动过程,另一种是普通 Activity 的启动过程。根 Activity 指的是应用程序启动的第一个 Activity,因此根 Activity 的启动过程一般情况下也可以理解为应用程序的启动过程。普通Activity 指的是除应用程序启动的第一个 Activity 之外的其他 Activity。根 Activity 的启动过程分为3个部分:Launcher 请求 AMS 过程、AMS 到 Applicat原创 2021-10-28 08:00:00 · 420 阅读 · 0 评论 -
Android进阶解密读书笔记(三)—— 应用程序进程启动过程
应用程序进程简介要想启动一个应用程序,首先要保证这个应用程序所需要的应用进程已经启动。AMS 在启动应用程序时会检查这个应用程序需要的应用程序进程是否存在,不存在就会请求 Zygote 进程启动需要的应用程序进程。在应用程序进程创建的过程中除了获取虚拟机实例外,还创建了 Binder 线程池和消息循环,这样运行在进程中的应用程序就可以方便地使用 Binder 进行进程间通信以及处理消息了应用进程启动过程介绍应用程序进程创建过程分为两个部分来讲解,分别是 AMS 发送启动应用程序进程请求,以及 Z原创 2021-10-12 14:44:26 · 233 阅读 · 0 评论 -
Android 进阶解密读书笔记(二)——系统启动
僵尸进程与危害:在Linux中,父进程使用 fork 创建子进程,在子进程终止之后,如果父进程并不知道子进程已经终止了,这时子进程虽然已经退出了,但是在系统进程表中还为它保留了一定的信息(比如进程号、退出状态、运行时间等),这个子进程就被称为僵尸进程。if(app == null) || app.instr == null): 判断符合Action为 Intent.ACTION_MAIN、Category 为 Intent.CATEGORY_HOME的应用程序是否已经启动,如果没有启动则走下一步。原创 2021-09-30 17:15:39 · 393 阅读 · 0 评论 -
Android进阶解密读书笔记(一)——Android系统架构
(Android4.4及之前使用的是Dalvik虚拟机,使用的是JIT(just in time)技术来进行代码转译,每次执行应用的时候,Dalvik将程序的代码编译为机器语言执行)位于操作系统内核与硬件电路之间的接口层,其目的在于将硬件抽象化,隐藏了特定平台的硬件接口细节,为操作系统提供虚拟硬件平台,使其具有硬件无关性,可以在多种平台上进行移植。系统运行库层(Native) 系统运行层分为两部分:C/C++程序库、Android运行时库。Linux 内核层(Linux Kernel)硬件抽象层(Hal)原创 2021-09-28 14:31:07 · 384 阅读 · 1 评论