承接上文 Android插件开发初探——基础篇
http://blog.csdn.net/yzzst/article/details/45582315


我们通过使用DexClassLoader能够将classes.dex中的类动态的加载进入当前进程。当然,也就可以预先定一些代理的接口完成四大组件的功能。

整体功能如下图所示:

当然,对于一个Android的应用程序而言,只是动态的加载类与声明四大组件是不够的。如下图所示,使我们常见到的一个APK文件解压缩后的文件内容。


有过Android项目开发的同学看到此目录应该不会特别的陌生,因为与我们开发Android应用程序时候的开发环境极为相似。但是,解压出来的文件毕竟不是源码,我们是无法直接阅读和修改的。对于其中的每个文件夹与文件,说明如下:

 - assets                       声音、字体、网页...资源,- org                          带三方库,如org.apache.http库- com                      带三方库,不解释- lib                          应用中使用到的native库- armeabi                  .so文件,c/c++代码库文件- META-INF                 APK的签名文件【***.RSA、***.SF、***.MF三个文件 】- res                          应用中使用到的资源目录- AndroidManifest.xml          应用的属性定义文件- classes.dex                  Java源码编译后的代码文件- resources.arsc               编译后的资源文件

这个对于我们的插件安装也是一样的,从目录中我们能够看出,如果我们需要做一个插件框架。除了使用ClassDexLoader解析加载classes.dex之外,从一个正常的APK安装流程中
我们还需要处理几个问题:

  • 插件签名校验

  • 安装native library,即完成Java Class与C/C++的调用

  • 处理AndroidManifest.xml,动态声明不同的组件/权限/广播/服务/Theme

  • 存储ShreadPreference/SQLite/cache等文件

  • 插件卸载

  • 宿主调用插件的功能、插件回调宿主的代码

  • 多个插件间功能的相互调用


只有完成了上述的几个问题,我们才能将此框架认为是一个较为合理的插件框架,不然也只能算是一个动态启动Activity的过程。

/*
* @author zhoushengtao(周圣韬)
* @since 2015年1月27日 上午14:02:22
* @weixin stchou_zst
* @blog http://blog.csdn.net/yzzst
* @交流学习QQ群:341989536
* @私人QQ:445914891
/

Android插件开发初探——分析篇相关推荐

  1. android插件框架机制的选择,Android插件开发初探——基础篇

    Android插件开发初探 对于Android的插件化其实已经讨论已久了,但是市面上还没有非常靠谱成熟的插件框架供我们使用.这里我们就尝试性的对比一下Java中,我们使用插件化该是一个怎么样的流程,且 ...

  2. 【转】android电池(四):电池 电量计(MAX17040)驱动分析篇

    关键词:android 电池  电量计  MAX17040 任务初始化宏 power_supply 平台信息: 内核:linux2.6/linux3.0 系统:android/android4.0  ...

  3. android电池(五):电池 充电IC(PM2301)驱动分析篇

    android电池(五):电池 充电IC(PM2301)驱动分析篇 关键词:android 电池  电量计  PL2301任务初始化宏 power_supply 中断线程化 平台信息: 内核:linu ...

  4. Android源码分析 - Framework层的Binder(客户端篇)

    开篇 本篇以aosp分支android-11.0.0_r25作为基础解析 我们在之前的文章中,从驱动层面分析了Binder是怎样工作的,但Binder驱动只涉及传输部分,待传输对象是怎么产生的呢,这就 ...

  5. Android原生插件开发-证书jks篇

    原创地址:Android原生插件开发-证书jks篇 · 语雀 jks生成 下载Android Studio Download Android Studio & App Tools - Andr ...

  6. 国内外物联网平台初探(篇五:机智云平台)

    国内外物联网平台初探(篇五:机智云平台) ------ [导读]------ 物联网智库将在每周五下午的第二篇文章推送由马智先生研究撰写的系列文章--<国内外物联网平台初探>. 物联网智库 ...

  7. android释放acitity内存,Android 内存泄漏分析与解决方法

    在分析Android内存泄漏之前,先了解一下JAVA的一些知识 1. JAVA中的对象的创建 使用new指令生成对象时,堆内存将会为此开辟一份空间存放该对象 垃圾回收器回收非存活的对象,并释放对应的内 ...

  8. Android性能调优篇之探索垃圾回收机制

    开篇废话 如果我们想要进行内存优化的工作,还是需要了解一下,但这一块的知识属于纯理论的,有可能看起来会有点枯燥,我尽量把这一篇的内容按照一定的逻辑来走一遍.首先,我们为什么要学习垃圾回收的机制,我大概 ...

  9. Android源码分析-全面理解Context

    前言 Context在android中的作用不言而喻,当我们访问当前应用的资源,启动一个新的activity的时候都需要提供Context,而这个Context到底是什么呢,这个问题好像很好回答又好像 ...

最新文章

  1. 计算机二级无法完成初始化,2012年计算机等级考试二级C语言常见问题:声明和初始化...
  2. MBProgressHUD 使用详解
  3. 【Linux 内核】进程管理 ( 进程与操作系统 | 进程与程序 | 进程与线程 | 虚拟地址空间 )
  4. mysql gone away 测试_python测试开发django-58.MySQL server has gone away错误的解决办法
  5. php 登陆 sql语句,PHP 连接MySQL数据库的SQL语句的简单示例
  6. 军哥华为HCNP(科目H12-221)真题解析课程:1-30题
  7. css怎样定义div大小,css如何设置div大小
  8. php 使用fseek指针读取大文件日志
  9. python 分类变量xgboost_XGBoost 原理 及 常见面试题
  10. K-th Number
  11. css 垂直居中_CSS垂直居中的另类实现
  12. java中的设计模式
  13. 2022款华硕灵耀pro16和华硕proart创16区别哪个好哪个更值得入手
  14. mysql5.464位下载_MySQL Front 64位
  15. app安全测试:OWASP ZAP 2.8 使用指南(四):ZAP扫描移动应用安全
  16. javascript 获取邮箱的后缀
  17. iOS集成EasyAR实现虚拟现实
  18. 计算电压电流看一下大家可以解出来吗?
  19. 三维重建——孔洞填补算法
  20. 云收呗api接口免费开放

热门文章

  1. 医疗保健领域的 7 个拯救生命的 AI 用例。从早期疾病检测到增强医疗决策再到更好的患者治疗效果——这就是人工智能技术如何改变医疗保健行业。
  2. Excel逻辑函数:如何实现Excel条件智能标记,简单方法,速学!
  3. 《计算机网络第6版-谢希仁》读书笔记
  4. 微型计算机通过将cpu等各种,微型计算机的组成及应用
  5. 计算机图形学 裁剪算法
  6. 数据源——信用评分的前世今生【附FICO分介绍】
  7. Serv-U File Server
  8. 服务器显示服务控制台已关闭程序,服务器上控制台窗口主机进程
  9. Linux挂载(mount,umount及开机自动挂载
  10. 开发Google眼镜的app