VirtualAPK

又一开源项目爆火于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) 概念 插件化解决的问题 各插件化框架对比 插件化实现

在公司写代码时,我总想回家带娃。

余生长醉 提交于 2020-12-25 10:23:07
桔妹导读 :离天空最近的地方,是父亲的肩膀。在这个特别的日子里,小编也搜集了一些滴滴年轻的工程师奶爸们的分享,听他们聊一聊当爸的初体验。也借此机会祝福所有做了父亲的工程师们,节日快乐! 内心充满激动和紧张 @张军 娃刚出生第五天黄疸严重,在医院住了五天,每天都会去医院给娃送母乳,但是医院管理严格,全程见不到娃,内心甚是想念。最难忘的是出院那天,去医院的路上,一想到就能见到娃,内心很是激动,那感觉已经超越了第一次约姑娘见面时内心的忐忑和紧张,也终于理解了父母对孩子的爱有多深。 见证了她 每一个 版本的「迭代」 @王道含 # Changelog # # 0.0.1 2019-3-21 feat: init # # 0.2.10 2019-5-31 feat: grab # # 0.3.2 2019-6-22 feat: turn over # # 0.5.7 2019-8-28 feat: sitting feat: climb # # 0.10.18 2020-2-8 feat: run # 1.0.5 2020-3-26 feat: say papa 作为我为数不多准时上线的产品,也见证了她一个一个版本的迭代。从一个脆弱的功能单一的噪音系统,通过硬件和软件的不断升级,逐步变成了一个人形自走多媒体交互语音系统。在陪伴和观察她成长的过程中,我也会有更多的想要去努力的动力

VirtualAPK分析

别来无恙 提交于 2019-11-30 18:08:23
VirtualAPK分析 VirtualAPK是由滴滴公司发布的一款插件化的Android APK框架。 其使用的也是动态代理的方式实现的。请看下面官方给的框架图: 从图中可以发现,在Core和Manager之间添加了一层代理。 先说宿主apk public class VAApplication extends Application { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); long start = System.currentTimeMillis(); PluginManager.getInstance(base).init(); Log.d("ryg", "use time:" + (System.currentTimeMillis() - start)); } @Override public void onCreate() { super.onCreate(); } } 首先宿主APK重写了Application,并且重写了attachBaseContext方法,此方法是在onCreate之前调用的。在attachBaseContext里面初始化了PluginManager,先看看在创建PluginManager的时候做了什么: