文件名称:Android代码-插件化系列详解,附带 Demo。
文件大小:177KB
文件格式:ZIP
更新时间:2022-08-25 22:34:26
Android代码
我们通过前4篇的分解,分别将插件化设计到的知识点全部梳理了一遍,如果没有看过的,建议先看前面4篇 Binder机制 插件化知识详细分解及原理 之代理,hook,反射, 类加载及dex加载 应用启动过程及类加载过程 好了上面介绍了之前准备的知识点后今天我们做一个真正的可运行的启动插件demo,要知道一个插件可能是随时从网上下载下来的,那么也就是说其实这个apk不会被安装,那么如果不被安装,怎么能被加载呢, 又如何管理插件中四大组件的生命周期呢,没有生命周期的四大组件是没有意义的。而且Activity是必须要在AndroidManifest中注册的,不注册就会抛出异常,那么怎么能绕过这个限制呢,还有,一个apk中肯定会用过各种资源,那么又该如何动态的加载资源呢。下面我们就带着这些问问一一的来解决,实现插件化,或者或是模块化。 先来看一下最终的运行结果 分析思路: 代码的动态加载: apk被安装之后,apk的文件代码以及资源会被系统存放在固定的目录比如/data/app/package_name/base-1.apk)中,系统在进行类加载的时候,会自动去这一个或者几个特定的路径来寻找这个
【文件预览】:
LiujiaqiAndroid-master
----.gitignore(118B)
----gradle()
--------wrapper()
----README.md(28KB)
----build.gradle(498B)
----gradlew.bat(2KB)
----gradlew(5KB)
----app()
--------.gitignore(7B)
--------build.gradle(942B)
--------proguard-rules.pro(673B)
--------src()
----gradle.properties(730B)
----.idea()
--------runConfigurations.xml(564B)
--------encodings.xml(159B)
--------misc.xml(3KB)
--------modules.xml(494B)
--------copyright()
--------compiler.xml(686B)
--------gradle.xml(683B)
----settings.gradle(31B)
----chajiandemo()
--------.gitignore(7B)
--------build.gradle(870B)
--------proguard-rules.pro(673B)
--------src()