插件化系列
文章平均质量分 84
进击的代码家
这个作者很懒,什么都没留下…
展开
-
Android插件化学习之路(二)之ClassLoader完全解析
Java代码都是写在Class里面的,程序运行在虚拟机上时,虚拟机需要把需要的Class加载进来才能创建实例对象并工作,而完成这一个加载工作的角色就是ClassLoader。类加载器ClassLoader介绍Android的Dalvik/ART虚拟机如同标准JAVA的JVM虚拟机一样,在运行程序时首先需要将对应的类加载到内存中。因此,我们可以利用这一点,在程序运行时手动加载Class,从而达到代码动原创 2016-11-19 22:53:24 · 7955 阅读 · 3 评论 -
Android插件化学习之路(一)之动态加载综述
前段时间,公司项目完成了插件化的开发,自己也因此学习了很多Android插件化的知识,于是想把这些内容记录下来,本次带来Android插件化的第一篇:动态加载综述Android插件化学习之路(一)之动态加载综述 Android插件化学习之路(二)之ClassLoader完全解析 Android插件化学习之路(三)之调用外部.dex文件中的代码 Android插件化学习之路(四)之使用插件中的R原创 2016-11-19 21:58:09 · 7347 阅读 · 0 评论 -
Android插件化学习之路(九)之DynamicLoadApk 源码解析(下)
承接上一篇,继续分析DynamicLoadApk 源码。 4.2 DLPluginPackage 插件信息对应的实体类,主要属性如下:public String packageName;public String defaultActivity;public DexClassLoader classLoader;public AssetManager assetManager;publi原创 2016-11-20 18:08:45 · 2004 阅读 · 1 评论 -
Android插件化学习之路(八)之DynamicLoadApk 源码解析(上)
DynamicLoadApk是插件化比较优秀的框架,为了更好的理解插件化,我们来分析一下DynamicLoadApk的源码。1.核心概念(1) 宿主:主 App,可以加载插件,也称 Host。 (2) 插件:插件 App,被宿主加载的 App,也称 Plugin,可以是跟普通 App 一样的 Apk 文件。 (3) 组件:指 Android 中的Activity、Service、Broadcas原创 2016-11-20 17:05:49 · 3314 阅读 · 0 评论 -
Android插件化学习之路(七)之DL插件开发该注意的坑
随着前面几篇博客的学习,相信大家对插件化已经有了比较清楚的认识,然而如何将插件化应用到项目中?网上已经有一些优秀的开源框架,这里要向大家推荐一个开源的动态加载框架DL, 该项目由任玉刚大神发起的,项目地址: https://github.com/singwhatiwanna/dynamic-load-apk,该项目结构图如下: 本篇博客,我主要向大家介绍一下利用DL框架进行开发的具体步骤,原创 2016-11-20 13:56:52 · 4794 阅读 · 0 评论 -
Android插件化学习之路(六)之动态创建Activity
静态代理Activity模式的限制我们在代理Activity模式一文里谈到启动插件APK里的Activity的两个难题吗,由于插件里的Activity没在主项目的Manifest里面注册,所以无法经历系统Framework层级的一系列初始化过程,最终导致获得的Activity实例并没有生命周期和无法使用res资源。使用代理Activity能够解决这两个问题,但是有一些限制实际运行的Activity原创 2016-11-20 10:50:42 · 4715 阅读 · 2 评论 -
Android插件化学习之路(五)之代理Activity
简单模式中,使用ClassLoader加载外部的Dex或Apk文件,可以加载一些本地APP不存在的类,从而执行一些新的代码逻辑。但是使用这种方法却不能直接启动插件里的Activity。启动插件中Activity的两个主要问题Activity等组件是需要在Manifest中注册后才能以标准Intent的方式启动的,通过ClassLoader加载并实例化的Activity实例只是一个普通的Java对象,原创 2016-11-20 10:22:13 · 4196 阅读 · 1 评论 -
Android插件化学习之路(四)之使用插件中的R资源
res里的每一个资源都会在R.java里生成一个对应的Integer类型的id,APP启动时会先把R.java注册到当前的上下文环境,我们在代码里以R文件的方式使用资源时正是通过使用这些id访问res资源,然而插件的R.java并没有注册到当前的上下文环境,所以插件的res资源也就无法通过id使用了。如何使用插件中的R资源一种解决方式是插件里需要用到的新资源都通过纯Java代码的方式创建(包括XML原创 2016-11-19 23:56:06 · 6587 阅读 · 5 评论 -
Android插件化学习之路(三)之调用外部.dex文件中的代码
Java程序中,JVM虚拟机是通过类加载器ClassLoader加载.jar文件里面的类的。Android也类似,不过Android用的是Dalvik/ART虚拟机,不是JVM,也不能直接加载.jar文件,而是加载dex文件。先要通过Android SDK提供的DX工具把.jar文件优化成.dex文件,然后Android的虚拟机才能加载。注意,有的Android应用能直接加载.jar文件,那是因为这原创 2016-11-19 23:36:11 · 5987 阅读 · 1 评论 -
滴滴插件化VirtualAPK框架原理解析(二)之Service 管理
在前一篇博客滴滴插件化框架VirtualAPK原理解析(一)之插件Activity管理 中VirtualAPK是如何对Activity进行管理的,本篇博客,我们继续来学习这个框架,这次我们学习的是如何去管理Service。Service工作原理分析说道如何对Service进行插件化,肯定得先了解Service的工作过程,不然何谈插件化?所以我们先一起学习Service的工作原理。Service分为原创 2017-07-30 23:21:11 · 4736 阅读 · 1 评论