RePlugin

又一开源项目爆火于GitHub,Android高级插件化强化实战

只愿长相守 提交于 2021-01-11 14:23:30
前言 相信大家都知道安卓应用开发的大量难题,其实最后都需要插件技术去解决。 现今插件技术的使用非常普遍,比如微信、QQ、淘宝、天猫、空间、携程、大众点评、手机管家等等这些大家在熟悉不过的应用都在使用。 插件技术可以给项目开发带来巨大的好处,比如:并行高效开发、模块解耦、解除单个dex函数不能超过65535的限制、动态更新升级、按需加载等等。 掌握好插件技术,需要如下的安卓基础和相关知识,例如: Android应用程序安装,加载过程 Android应用运行机制,生命周期调用原理 Android应用资源编译打包原理 Android应用读取资源原理 Android系统AMS、PMS、NMS等系统服务的运作原理 增量更新 HOOK等技术 本文将从基础的插件化原理到Android插件化初探再到大厂架构演化实战应用,总结出了较为全面与完整的安卓插件技术与插件化对 Android开发的重要性。 插件化原理 1.类加载 2.双亲委托机制 3.资源加载 4.四大组件支持 5 ProxyActivity代理 6 hook方式 7 其他组件 8 Android动态加载框架DL的架构与基本原理解析 9 Android 插件化框架 DynamicLoadApk 源码分析 Android插件化初探 1.从零开始实现一个插件化框架(1) 概念 插件化解决的问题 各插件化框架对比 插件化实现

Android 全面插件化 RePlugin 流程与源码解析

妖精的绣舞 提交于 2019-12-23 21:32:00
转自 Android 全面插件化 RePlugin 流程与源码解析 RePlugin,360开源的全面插件化框架,按照官网说的,其目的是“尽可能多的让模块变成插件”,并在很稳定的前提下,尽可能像开发普通App那样灵活。那么下面就让我们一起深入♂了解它吧。 (ps :阅读本文请多参考源码图片 ( ̄^ ̄)ゞ ) 一、介绍   RePlugin对比其他插件化,它的强大和特色,在于它只Hook住了ClassLoader。One Hook这个坚持,最大程度保证了稳定性、兼容性和可维护性,详见 《全面插件化——RePlugin的使命》 。当然,One Hook也极大的提高了实现复杂程度性,其中主要体现在: 增加了Gradle插件脚本,实现开发中自动代码修改与生成。 分割了插件库和宿主库的代码实现。 代码中存在很多不少 @deprecated 、 TODO 和临时修改。 初始化、加载、启动等逻辑比较复杂。 图一 Replugin项目结构   本篇将竭尽所能,为各位介绍其流程和内部实现,如果存在一些地方存在纰漏,还请指出。文章篇幅较长,需耐心阅读,阅读时可结合图片源码,同时欢迎收藏,或选择感兴趣点阅读,下面主要涉及: 二、ClassLoader基础知识。 三、Replugin项目原理和结构分析。 四、Replugin的ClassLoader。 五、Replugin的相关类介绍。 六

Replugin借助“UI进程”来快速释放Dex

这一生的挚爱 提交于 2019-11-29 18:06:37
public static boolean preload(PluginInfo pi) { if (pi == null) { return false; } // 借助“UI进程”来快速释放Dex(见PluginFastInstallProviderProxy的说明) return PluginFastInstallProviderProxy.install(RePluginInternal.getAppContext(), pi); } PluginFastInstallProviderProxy 的java doc中提到: Android 7.0及以上,若在UI进程中优化Dex,则比非UI进程要快4~5倍(如loan插件从4800ms到900ms) 这和“JIT/AOT”和“空闲时编译”的机制有关,参见Google官方说明,不在此赘述。 我搜了一下,还没找到上面提到的 Google官方说明 。关于和 UI线程相关 的hot code JIT编译的文章,仅仅找到了一篇 简介性文章 (第9页倒数第2段). 请问是否能提供这方面的更多信息? 来源: https://my.oschina.net/u/1446823/blog/3106328