【Android 插件化】Hook 插件化框架 ( hook 插件化原理 | 插件包管理 )(一)

简介: 【Android 插件化】Hook 插件化框架 ( hook 插件化原理 | 插件包管理 )(一)

一、hook 插件化原理


使用 Hook 实现的插件化原理如下 : 通过以下 3 33 个步骤实现插件化 ;



1. 加载插件包中的字节码



2. hook 技术 : 直接通过 hook 技术, 钩住系统的 Activity 启动流程实现


① Activity 对象创建之前 , 要做很多初始化操作 , 先在 ActivityRecord 中加载 Activity 信息 , 如果修改了该信息 , 将要跳转的 Activity 信息修改为插件包中的 Activity , 原来的 Activity 只用于占位 , 用于欺骗 Android 系统 ;


② 使用 hook 技术 , 加载插件包 apk 中的 Activity


③ 实现跳转的 Activity ( 插件包中的 )



3. 资源加载 : 主要是解决 Resources 资源冲突问题 ;


( 使用上述 hook 插件化 , 可以不用考虑 Activity 的生命周期问题 )



占位 Activity : 插件包中的 Activity 是通过正规流程 , 由 AMS 进行创建并加载的 , 但是 该 Activity 并没有在 AndroidManifest.xml 清单文件中注册 , 这里需要一个已经在清单文件注册的 Activity 欺骗系统 ;


插装式插件化 : 是通过代理 Activity , 将 插件包加载的 字节码 Class 类 中 对应的 Activity 类作为一个普通的 Java 类 , 该普通的 Java 类有所有的 Activity 的业务逻辑 , 该 Activity 的生命周期 , 由代理 Activity 执行相关的生命周期方法


hook 插件化 : hook 插件化直接钩住系统中 Activity 启动流程的某个点






二、插件化依赖库创建


hook 插件化依赖库是 Android 依赖库 ( Android Library Module ) ;


创建插件化的核心依赖库 :

image.png



通过该 lib_plugin_core 依赖库 , 实现插件化相关功能 ;

image.png



在其中创建插件化的核心管理类 PluginManager , 用于管理插件相关内容 ;



image.png




目录
相关文章
|
27天前
|
SQL 人工智能 Dart
Android Studio的插件生态非常丰富
Android Studio的插件生态非常丰富
42 1
|
1月前
|
缓存 Java 数据库
Android的ANR原理
【10月更文挑战第18天】了解 ANR 的原理对于开发高质量的 Android 应用至关重要。通过合理的设计和优化,可以有效避免 ANR 的发生,提升应用的性能和用户体验。
124 56
|
1月前
|
算法 JavaScript Android开发
|
25天前
|
开发框架 Dart Android开发
安卓与iOS的跨平台开发:Flutter框架深度解析
在移动应用开发的海洋中,Flutter作为一艘灵活的帆船,正引领着开发者们驶向跨平台开发的新纪元。本文将揭开Flutter神秘的面纱,从其架构到核心特性,再到实际应用案例,我们将一同探索这个由谷歌打造的开源UI工具包如何让安卓与iOS应用开发变得更加高效而统一。你将看到,借助Flutter,打造精美、高性能的应用不再是难题,而是变成了一场创造性的旅程。
|
2月前
|
Java 程序员 API
Android|集成 slf4j + logback 作为日志框架
做个简单改造,统一 Android APP 和 Java 后端项目打印日志的体验。
128 1
|
2月前
|
XML 前端开发 Android开发
Android View的绘制流程和原理详细解说
Android View的绘制流程和原理详细解说
48 3
|
2月前
|
Android开发
我是一位Android工程师,用通义灵码的AS插件做开发工作助手,对比之前没有灵码,现在提效了60%
我是一位Android工程师,用通义灵码的AS插件做开发工作助手,对比之前没有灵码,现在提效了60%
71 0
|
3月前
|
ARouter 测试技术 API
Android经典面试题之组件化原理、优缺点、实现方法?
本文介绍了组件化在Android开发中的应用,详细阐述了其原理、优缺点及实现方式,包括模块化、接口编程、依赖注入、路由机制等内容,并提供了具体代码示例。
51 2
|
3月前
|
前端开发 Java 数据库
💡Android开发者必看!掌握这5大框架,轻松打造爆款应用不是梦!🏆
在Android开发领域,框架犹如指路明灯,助力开发者加速应用开发并提升品质。本文将介绍五大必备框架:Retrofit简化网络请求,Room优化数据库访问,MVVM架构提高代码可维护性,Dagger 2管理依赖注入,Jetpack Compose革新UI开发。掌握这些框架,助你在竞争激烈的市场中脱颖而出,打造爆款应用。
414 3
|
2月前
|
Java 调度 Android开发
Android面试题之Kotlin中async 和 await实现并发的原理和面试总结
本文首发于公众号“AntDream”,详细解析了Kotlin协程中`async`与`await`的原理及其非阻塞特性,并提供了相关面试题及答案。协程作为轻量级线程,由Kotlin运行时库管理,`async`用于启动协程并返回`Deferred`对象,`await`则用于等待该对象完成并获取结果。文章还探讨了协程与传统线程的区别,并展示了如何取消协程任务及正确释放资源。
39 0