Android插件开发初探——分析篇

承接上文 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
/
这里写图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北漂周

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值