美文网首页
伪代码解读VirtualApk

伪代码解读VirtualApk

作者: caojiying | 来源:发表于2019-11-04 13:43 被阅读0次

[TOC]

前言

“二八定律”在软件行业也有体现,甚至更为极端。据说90%的代码在平时都不会运行到。比如异常处理、分支条件,或者是为了可维护性做的大量封装。这些代码是必须存在的,但对于开源框架的使用者,初次打开源码一般梳理清楚主流程就足够了,这些长篇代码却往往变成了阻碍阅读的干扰项。让我们回归初心,用最简单的伪代码(pseudo code)剥茧抽丝,对我自己而言,也希望这个系列能坚持下去,让更多的人减少阅读源码的痛楚。

注:本文所使用VirtualApk的源码版本为0.9.8.6【TODO 引用地址】

调用

VirtualApk的demo在调用时不可避免要跟文件I/O、权限申请打交道,并且代码分布在ApplicationActivity之中。整理过后的伪代码是:

    /**
     * 伪代码(pseudo code), 不要用于实际开发
     */

    // 初始化PluginManager, 并加载插件Apk, file是插件Apk的存储路径
    PluginManager.getInstance(context).loadPlugin(file);

    // 启动Activity, Service的启动也是一样
    Intent intent = new Intent();
    intent.setClassName(context, "com.plugin.apk.fqcn.PluginTargetActivity");
    startActivity(intent);

伪代码体现出的:

  • 框架暴露给我们的API是PluginManager类,常见的门面(Facade)+单例(Singleton)设计模式;
  • 启动插件Apk里的某个Activity和正常启动项目Activity的方式类似,都是通过创建指向目标ActivityIntent,最后调用startActivity(intent)完成调用;
  • 区别在于启动插件Activity无法传入class<?>类型的参数,需要用String类型代替,这点与启动常规Activity不同(直观原因是宿主项目无法引用到插件项目中的class,另一个不那么直观的原因是插件class使用了不同的ClassLoader加载,后续会讲到);
  • 注释表明启动Service的方式和Activity相同,都是通过intent.setClassName()startActivity(intent)/startService(intent)

伪代码没有体现出的:

  • 官方demo还调用了PluginManager.init()方法,暂且认为是个空实现忽略它;
  • demo还演示了插件ContentProvider的使用方法,鉴于大部分情况不使用就不在本篇写了;

具体代码在VirtualApk/app目录下,VAApplicationMainActivity两个类。【TODO 引用地址】

相关文章

  • 伪代码解读VirtualApk

    [TOC] 前言 “二八定律”在软件行业也有体现,甚至更为极端。据说90%的代码在平时都不会运行到。比如异常处理、...

  • kotlin 协程学习笔记(二)Retrofit的协程原理

    源码解读基于2.9.0本笔记记录本人阅读源码思路,并非源码解读不想看阅读源码思路的直接拉倒最下面看伪代码 该代码块...

  • Android插件化热修复

    项目实战之插件化VirtualAPK 使用滴滴插件化方案 VirtualApk 源码解析VirtualAPK 踩坑...

  • VirtualApk插件

    VirtualApk介绍 VirtualAPK是滴滴出行自研的一款插件化框架。?传送门 VirtualApk 接入...

  • 笔记-关联对象

    目录 面试题 伪代码实现 Category添加属性的几种用法 Category为什么不能添加成员变量 底层源码解读...

  • 数据结构笔记-队列

    队列 Queue 一、存储 伪代码 C语言实例(部分代码) 二、操作 1.入队 伪代码 2.出队 伪代码

  • 算法导论第2.1章 - 算法基础 (伪代码和循环不变式)

    伪代码 什么是伪代码?本书用伪代码来书写程序,使用清晰简洁的方式来说明给定的算法。类似我们常用的程序语言。伪代码的...

  • 数据结构笔记-栈

    栈 Stack 一、存储 伪代码 C语言实例(部分代码) 二、操作 1.入栈 伪代码 2.出栈 伪代码

  • VirtualApk加载插件原理

    在VirtualApk官方文档https://github.com/didi/VirtualAPK/wiki/第三...

  • 分布式事务 - 伪代码解读

    随着数据规模不断上涨,数据操作的性能越来越低,为了提升性能,在数据库层面,通常通过分库分表提升性能,提升吞吐量,但...

网友评论

      本文标题:伪代码解读VirtualApk

      本文链接:https://www.haomeiwen.com/subject/elorbctx.html