自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 Gradle For Androider

文章目录Gradle思想闭包taskgradle 工作流程Gradle WrapperAndroid插件构建文件的目录:Android 块dependency块全局配置Gradle 依赖管理Gradle思想在软件开发过程中,编码,编译,打包,测试,这几个过程必不可少,这些过程中有些步骤的重复性非常高,在没有构建工具之前,开发人员需要自己手动的编译,手动的打包,这些操作都是可以通过重复的有序的步骤来完成的,Gradle就可以帮助我们自动的编译,打包,从而提高开发的效率和质量;闭包Gradle是基于Gr

2020-11-13 17:54:49 283

原创 AMS系列③—常见的数据结构

本文介绍AMS管理Activity时涉及到的重要的数据结构:ProcessRecord:安卓系统中用于描述进程的数据结构ActivityRecord:描述Activity的数据结构TaskRecord:描述栈的数据结构ProcessRecordAMS中的ProcessRecord成员变量变量意义注释mProcessNames数据类型为ProcessMap,以包名为key来记录ProcessRecord;All of the applications we cur

2020-11-12 18:12:25 415

原创 AMS系列②—Binder通信的双向代理绑定

Binder进程见通信是通过远程代理来实现的,SystemServer进程和APP用户进程使用Binder进行通信,必须建立双向的代理绑定,即:一个进程即使客户端也是服务端,这样才能实现双工通道:只有持有对方进程的代理对象,才能通过代理对象控制真实对象做事情,代理对象必须是一个Binder接口,因为它要依赖Binder帮我们做底层的进程间的数据传递,下面从源码分析下,这个双向代理的建立过程:App进程创建AMS代理 (APP作为客户端)上一篇文章介绍了ams的创建的具体细节,在 startBoo

2020-11-12 18:11:13 426

原创 AMS系列①—AMS的启动

AMS作为Android FrameWork中最核心的一个部分,是应用层开发者进阶的里程碑,本文是AMS专栏的第一篇文章,介绍AMS的启动相关:在学习AMS之前,需要掌握一些基础知识:Android系统的启动过程Android进程通信方式—Binder机制Android线程同步方式—Handler机制在学习完上面的内容后,我们可以知道AMS的启动是由SystemServer进程发起的:SystemServer.main()AMS的入口方法SystemServer的main()做了两件事:

2020-11-12 18:08:18 660

原创 Android进阶解密⑤—热修复

在此之前已经总结过ClassLoader的原理,以及通过ClassLoader方式实现的热修复思路,实现热修复的方法有很多,大致有三种方式:ClassLoaderInstant Run(ASM字节码插装)底层替换方案本文重点介绍后两种实现热修复的方式, 第一种方式可以参考这篇文章:ClassLoader&双亲委派模型Instant Run方案(ASM字节码插装)关于Instant Run的了解可以参考这篇文章: Android Studio新功能解析,你真的了解Instant R

2020-11-12 17:27:20 241

原创 Android进阶解密④—插件化原理

在学习插件化之前需要看前面几篇文章:Android进阶解密①—activity的启动过程Android进阶解密②—Service的启动Android进阶解密③—Hook动态加载技术:在程序运行时,动态加载一些程序中原本不存在的可执行文件并运行起来,,随着应用技术的发展,动态加载技术逐渐派生出两个分支,热修复和插件化;热修复:用于修复bug插件化:解决应用庞大,功能模块解耦,复用其他apk的代码插件化思想:将复用的apk作为插件,插入另一个apk中,比如淘宝中会有咸鱼的页面,用淘宝为

2020-11-12 17:24:57 2001 7

原创 Android进阶解密③—Hook

源码的执行是按照一定流程思路进行的,hook就是在源码的执行流程之间插入一步操作,起到拦截,替换的作用;被改变的对象称为hook点,一般将不易发生变化的类作为hook点;常见的hook点有:静态变量单例代理模式:学习hook必须了解代理模式,可以参考我这篇文章:反射和动态代理Hook startActivity首先需要知道startactivity的流程:Android进阶解密①——activity的启动过程我们知道startActivity会通过mInstrumentation这个

2020-11-12 17:21:50 256

原创 Android进阶解密②—Service的启动

文章目录一 StartServiceContextImpl到AMSContextImpl.startServiceCommon()AMS到ActivityThreadActivityThread.scheduleCreateService()H的处理二 BindService:AMS的bindService逻辑都交给了`ActiveServices`ActiveServices.requestServiceBindingLocked():ActivityThread.scheduleBindService(

2020-11-12 17:11:26 259

原创 Android进阶解密1⃣️—Activity的启动流程

文章目录根Activity启动的整理流程:步骤1 Launcher请求AMS1.1 Launcher.startActivitySafely()1.2 Activity.startActivityForResult():1.3 Instrumentation.execStartActivity():步骤2 AMS到ApplicationThread2.1 AMS.startActivityAsUser():2.2 ActivityStarter.startActivityMayWait():2.3 Act

2020-11-12 16:57:50 314

原创 PMS系列5⃣️—APK的解析

文章目录ParsePackage():parseClusterPackage():ParseBaseAPK():parseBaseApplication()Package():ParsePackage(): public Package parsePackage(File packageFile, int flags, boolean useCaches) throws PackageParserException { Package parsed = us

2020-11-12 10:37:51 474

原创 PMS系列4⃣️—apk安装时PMS的处理

文章目录一 defcontainer进程的绑定PMS.installStage():INIT_COPY的处理:1.connectToService()2. MCS_BOUND消息的处理:二 APK的复制startCopy():1. handleStartCopy():FileInstallArgs.doCopyApk():2. handleReturnCode():三 PMS负责的安装processPendingInstall()installPackageTracedLI():installPackage

2020-11-10 18:48:44 404

原创 PMS系列3⃣️—PackageInstallerActivity到PMS

PackageInstallerActivity到PMS过程PackageInstallerActivity:InstallInstalling:InstallInstalling.onCreate()InstallInstalling.onResume()InstallingAsyncTask:PackageInstallerSession.commit():MSG_COMMIT的处理:commitLocked():整体梳理(PackageInstallerActivity到PMS)PackageIns

2020-11-09 18:38:52 242

原创 PMS系列2⃣️—PackageInstaller的初始化

PackageInstaller的初始化PackageInstaller的入口—InstallStart ActivityInstallStaging.onResume()StagingAsyncTaskPackageInstallerActivity1. 初始化安装需要的各种对象:2. processPackageUri()3. checkIfAllowedAndInitiateInstall()3.1 initiateInstall() 初始化安装startInstallConfirm:整体流程Pac

2020-11-09 17:20:32 358

原创 PMS系列1⃣️——PMS的创建

PMS的构造过程SystemServer创建PMS过程SystemServer.startOtherServices()PMS.main()PMS的构造方法的五个阶段阶段一:START 开始阶段阶段二:SYSTEM_SCAN_START 扫描系统阶段阶段三:DATAS_SCAN_START 扫描DATA分段区域阶段阶段四:SCAN_END 扫描结束阶段阶段五:READY 准备阶段SystemServer创建PMS过程PMS和AMS一样,属于framework中比较重要的系统服务,位于SystemServ

2020-11-09 17:19:44 773 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除