Android插件化
Android插件化框架的使用并深入源码分析插件化原理
傅晨明
毕业于杭州电子科技大学
展开
-
Android反射2-对反射语法的封装
2 对基本反射语法的封装前面介绍的种种语法,无论是反射出一个类,还是反射出一个构造函数井调用它,都是为了进一步读写类的方法和宇段,所以我们只要封装以下几个方法即可:反射出 一个构造 函数并调用它 。调用静态方法。调用实例方法 。获取和设置一个字段的值。对泛型的处理 。2.1 反射出一个构造函数 public static Object createObject(String...原创 2020-11-04 09:28:10 · 657 阅读 · 0 评论 -
Java和Android的ClassLoader原理分析
文章目录Java中的ClassLoaderAndroid中的ClassLoaderAndroid的ClassLoader的种类Android中ClassLoader的特点ClassLoader源码Android中的动态加载总结Java中的ClassLoader类加载器加载流程Android中的ClassLoaderAndroid的ClassLoader的种类BootClassLoa...原创 2019-11-12 13:15:14 · 303 阅读 · 0 评论 -
Android虚拟机
文章目录JVM结构解析编译流程类加载器加载流程JVM内存管理Java栈区本地方法栈方法区堆区垃圾收集算法引用的类型垃圾回收算法触发回收Dalvik与JVM的不同ART比Dalvik的优势总结JVM结构解析编译流程类加载器加载流程Loading:类的信息从文件中获取并且载入到JVM的内存里Verifying:检查读入的结构是否符合jvm规范的描述Preparing:分配一个结构...原创 2019-11-12 10:57:31 · 537 阅读 · 0 评论 -
class和dex文件解析
文章目录class文件什么是class文件如何生成一个class文件class文件格式详解dex文件什么是dex文件如何生成一个dex文件dex文件的作用dex文件结构class和dex对比总结class文件什么是class文件?如何生成一个class文件?class文件的作用?class文件格式详解什么是class文件能够被jvm识别,加载并执行的文件格式。如何生成一个clas...原创 2019-11-12 09:34:32 · 431 阅读 · 0 评论 -
Android插件化-Hook实现加载完整的插件
文章目录1 小实验ClassLoader相关知识可以参考:1、理解Java和Android的ClassLoader2、Android ClassLoader源码分析1 小实验 ClassLoader cl = getClassLoader(); Log.i("fuhongxue", "onCreate: "+cl);打印:I/fuhongxue: onCreate: dalvi...原创 2019-11-11 17:04:38 · 619 阅读 · 0 评论 -
Android 插件化插桩式和Hook式的区别
原创 2019-11-10 10:58:00 · 1596 阅读 · 0 评论 -
Android Hook AMS实现登陆架构
SystemServer:frameworks/base/services/java/com/android/serverPackageManagerService:frameworks\base\services\core\java\com\android\server\pmHook技术也称为钩子函数。钩子函数实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。在系统没有到...原创 2019-11-01 11:18:04 · 669 阅读 · 0 评论 -
Android 反射的简单示例
package com.hongx.proxy;public class Singleton { public String name; public Singleton() { name = "FuHongXue"; } public void setName(String name) { this.name = name; }}package com.hongx...原创 2019-10-31 11:17:15 · 196 阅读 · 0 评论 -
Android静态和动态代理
文章目录1 静态代理2 动态代理1 静态代理Class1有个doSomething方法,如果在方法执行前记录一行日志。一般的做法是,直接子doSomething方法的最前面写一行记录日志的代码。使用代理模式,我们可以设计一个Class1Proxy,这样可以不需要更改Class1中的任何代码就能实现这个功能,如下图所示。图 : 静态代理模式代码实现:public interface ...原创 2019-10-31 09:55:25 · 320 阅读 · 0 评论 -
Android startActivity源码分析
Android 6.0 Activity.java 源码地址//frameworks/base/core/java/android/app/Activity.java4179 @Override4180 public void startActivity(Intent intent) {4181 this.startActivity(intent, null);...原创 2019-10-31 09:21:43 · 428 阅读 · 0 评论 -
Android 代理模式
随着泛型的引用,代理模式分为静态代理和动态代理两种,在插件化中分别表示为对Instrumentation和AMN进行Hook。1.1概述代理模式,也就是Proxy,比如Android系统源码中的ActivityManagerProxy。为其他对象提供一种代理以控制对这个对象的访问。代理模式的UML图,如图1-1所示。1.1.1 远程代理(AIDL)在Android系统中,远程代理的设计...原创 2019-07-04 09:10:27 · 175 阅读 · 0 评论 -
Activity 插件化-Hook Activity
文章目录1 Hook IActivityManager 方案实现2 Hook Instrumentation 方案实现四大组件的插件化是插件化技术的核心知识点,而 Activity 插件化更是重中之重,Activity 插件化主要有 3 种实现方式,分别是反射实现、接口实现和 Hook 技术实现。反射实现会对性能有所影响,主流的插件化框架没有采用此方式,关于接口实现可以阅读dynamic-loa...原创 2019-08-09 08:00:49 · 3000 阅读 · 0 评论 -
Android对startActivity方法进行Hook
Hook startActivity,可以启动一个没有在AndroidManifest中声明的Activity。1 startActivity方法的两种形式//第一个是Activity的startActivity方法startActivity(intent);//第二个是Context的startActivity方法getApplicationContext().startActivi...原创 2019-07-04 13:14:56 · 700 阅读 · 0 评论 -
Android Hook概述和技术原理
文章目录1 Hook概述2 Hook技术分类1 Hook概述说到 Hook 技术得先提到逆向工程,逆向工程源于商业及军事领域中的硬件分析,其主要目的是在不能轻易获得必要的生产信息的情况下,直接从成品分析,推导出产品的设计原理。逆向分析分为静态分析和动态分析,其中静态分析指的是一种在不执行程序的情况下对程序行为进行分析的技术;动态分析是指在程序运行时对程序进行调试的技术。Hook 技术就属于动...原创 2019-08-14 10:23:07 · 1338 阅读 · 1 评论 -
Android插件化3-插桩式-动态广播插件化
Android插件化1-插桩式-Activity插件化:https://blog.csdn.net/hongxue8888/article/details/98887680Android插件化2-插桩式-Service插件化:https://blog.csdn.net/hongxue8888/article/details/99165077文章目录1 概述2 动态广播插件化2.1 plugin...原创 2019-08-15 10:55:10 · 322 阅读 · 1 评论 -
Android插件化2-插桩式-Service插件化
Service和广播插件化ClassLoad家族,继承关系图DexClassLoader加载机制原理原创 2019-08-12 08:25:07 · 327 阅读 · 0 评论 -
Android插件化1-插桩式-Activity插件化
1、插件化概述插件化属于动态加载技术动态加载技术:插件化、热修复动态加载技术:在应用程序运行时,动态加载一些程序中原本不存在的可执行文件并运行这些文件里的代码逻辑,可执行文件总的来说分为两个,一个是动态链接库so,另一种是dex相关文件(dex文件包含jar/apk文件)。插件化的作用:主要用于解决应用越来越庞大以及功能模块的解耦,所以小项目中一般用的不多。热修复:主要用于修复bug。...原创 2019-10-24 22:07:14 · 1060 阅读 · 0 评论 -
Android插件化技术总结与对比
插件化历史2014 - 任玉刚推出新一代插件技术dynamic-load-apk2015 - 360公司推出插件技术DroidPlugin后面陆续推出 Small DynamicApk Atlas VirtualApk 都是基于DroidPlugin来展开目前正在维护的有 DroidPlugin atlas VirtualApk插桩式实现插件化通过在宿主内声明一个代理Ac...原创 2019-10-24 20:04:33 · 821 阅读 · 0 评论 -
Android ClassLoader源码分析
文章目录1 PathClassLoader2 DexClassLoader3 BaseDexClassLoader4 DexPathList5 ClassLoaderAndroid开发文档地址:https://developer.android.google.cn/reference/dalvik/system/package-summaryhttps://developer.android...原创 2019-09-29 10:34:36 · 368 阅读 · 3 评论 -
Android反射1-基本反射技术
1.1基本反射技术反射包括以下技术:1、根据一个字符串得到一个类的对象。2、获取一个类的所有公用或私有、静态或实例的字段、方法、属性。3、对泛型类的反射。1.1.1 根据一个字符串得到一个类1.getClass通过一个对象,获取它的类型。类型用Class表示://通过getClass,每个Class都有这个函数String str = "abc";Class c1 = st...原创 2019-07-29 19:46:22 · 216 阅读 · 0 评论 -
Android开发效率提升十倍的利器-Gradle
Android开发效率提升十倍的利器-Gradle1 Gradle介绍1 语言和作用Gradle是一种自动化构建语言,是一种DSL(Domain Specific language),目前是Android的默认构建工具,还一个编程框架。Gradle特性语言:Groovy,先将其编译成java类字节码,然后通过JVM来执行这个java类。支持环境Android S...原创 2019-07-23 22:07:16 · 540 阅读 · 0 评论 -
理解Java和Android的ClassLoader
文章目录1 Java 中的 ClassLoader1.1 Classloader 的类型1.2 Classloader 的继承关系1.3 双亲委托模式1.4 自定义 Classloader2 Android 中的 ClassLoader2.1 Classloader 的类型2.1.1 BootClassloader2.1.2 DexClassloader2.1.3 PathClassloader2...原创 2019-07-05 11:22:06 · 445 阅读 · 0 评论