Android插件开发初探——分析篇
来源:互联网 发布:淘宝销量查询 编辑:程序博客网 时间:2024/05/17 04:27
承接上文 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插件开发初探——分析篇
- Android插件开发初探——基础篇
- 【Android开发学习笔记】【高级】【随笔】插件化——初探
- JQuery插件开发初探——结构熟悉
- JQuery插件开发初探——图片轮播
- Android第一开发语言—初探Kotlin
- android插件开发——加载插件
- IOS开发初探xcode插件
- Android开发:Camera初探——控制摄像头拍照
- ndk系列——使用Android Studio 初探NDK开发
- ReactNative开发——RN与android Native交互初探
- 【Android】Android插件开发 —— 基础入门篇
- android开发初探
- Android Studio插件开发实战(3)-FindViewByMe插件分析
- Android插件化开发—RePlugin插件化框架
- Android开发——桌面插件
- WinCE开发初探——开发环境
- WinCE开发初探——开发环境
- 使用py2exe生成独立的exe文件
- Eclipse 中Alt+/快捷键失效的解决办法
- OC基础
- cef3 process mouse key event
- UICollectionView 不同大小Cell 等间距的实现
- Android插件开发初探——分析篇
- poj1017
- tomcat彻底关闭
- BZOJ 4025 二分图 分治+并查集
- “黑马程序员”Java反射
- 学习响应式设计
- springMVC 配置文件详解
- JavaScript 表单验证
- poj2309解题报告