• 安卓应用程序插件化开发框架 AAP Framework


    上篇博文,介绍了一种安卓开发中程序插件化的方法,想想应该可以搞的更方便些,于是花了4天时间把框架做出来了,希望能对大家有用。

    介绍

    这个框架的初衷,是为了方便让程序模块化、插件化,将一个apk应用拆分为多个apk。
    不明白这个插件化、模块化是怎么回事的话,可以看看腾讯微信的安卓客户端中的插件配置。
    在这里我会以腾讯微信为例,如何使用这个框架。 (腾讯微信并不是真正的插件化,它是伪的,插件并非与它的主程序分离开,结果就是每次插件的更新,都必须以整个程序的更新为代价)

    都能干啥

    框架的思想,主要是通过apk清单文件中的sharedUserId属性来吧多个apk融合为单一的dalvik虚拟机,也就是融合为一个进程,这样就变相逾越了android框架中不同apk权限不同无法互通的鸿沟(rpc啦什么的其它的毕竟不如这个来的实在)。
    从最简单的皮肤插件到复杂的涉及数据库的拓展功能,从普通activity跳转到把插件的activity转变为view并附加到主程序中的拓展功能,都是可以通过本框架来实现的,当然,本框架只是提供了一种途径,如何编码还得靠自己。
    本人能力有限,可能有一些错误、疏漏或者不足之处,请不吝指教,我的博客地址在左下角,或者我的邮箱,都可以联系到我。
    ps:下面会以腾讯微信为例,这里声明一下,本人没有对微信安卓客户端进行任意形式的反编译与破解工作,只是看球半天进行简单的猜测而已。

    框架结构

    本插件框架由三个包组成:
    • org.igeek.android.pluginframework 这个包种类是框架的主要操作类
      1. PluginBuilder? 组装插件
      2. PluginDescription? 组装用户自定义的插件描述
      3. PluginInvoke? 插件功能调用
      4. PluginSearch? 查找插件
    • org.igeek.android.pluginframework.annotation 未来可能会考虑使用注解
      1. PluginDescription? 用于用户自定义描述类的注解
      2. PluginFeature? 用于插件类的注解
      3. PluginMethod? 用于插件类方法的注解
    • org.igeek.android.pluginframework.beans 框架内部使用的一些beans
      1. Plugin 插件包
      2. PluginFeature? 插件类
      3. PluginFeatureMethod? 插件方法
    • org.igeek.android.pluginframework.util 一些工具类
      1. XMLParse 插件包
  • 相关阅读:
    ajax原理和XmlHttpRequest对象
    在vue项目中 如何定义全局变量 全局函数
    杂乱知识 -- 记录工作或学习中遇到的一些点
    JavaScript中的数组遍历forEach()与map()方法以及兼容写法
    cookie的存取删
    微信小程序中公用内容
    mysql 多实例
    yum 安装和卸载
    rpm 安装卸载
    git blame
  • 原文地址:https://www.cnblogs.com/hangxin1940/p/2291380.html
Copyright © 2020-2023  润新知