android 插件框架

解决方案:

1.宿主 注册 act service  反射调用 插件apk

2.引用公用库的方法,给插件act和service设置代理,调用代理

3.android系统加载dex用dexClassLoader,android程序有pathClassLoader类继承与dexClassLoader但是不能加载到虚拟机生命周期,解决方案是采用pathClassLoader加载后再调用dexClassLoader加载pathClassLoader。

4.淘宝那套插件框架 每个插件单独生活在独自的进程中。

实施方案:2套方案

注意点:

1.插件打包:公用库不能打包到插件中,插件打包时用外部引用模式

2.插件升级 ,插件必须运行在另一个进程中 升级时 先 kill掉进程再重新加载dex包

3.使用限制:调用content 不能调用this 需要调用that  xml中的 View 标签的 onClick 不能使用

4.插件调用:调用什么插件需要从网络上下载相应的插件。

时间: 2024-10-13 01:47:09

android 插件框架的相关文章

基于Proxy思想的Android插件框架

意义 研究插件框架的意义在于下面几点: 减小安装包的体积,通过网络选择性地进行插件下发 模块化升级.减小网络流量 静默升级,用户无感知情况下进行升级 解决低版本号机型方法数超限导致无法安装的问题 代码解耦 现状 Android中关于插件框架的技术已经有过不少讨论和实现.插件通常打包成apk或者dex的形式. dex形式的插件往往提供了一些功能性的接口,这样的方式类似于java中的jar形式.仅仅是因为Android的Dalvik VM无法直接动态载入Java的Byte Code,所以须要我们提供

360动态加载的Android插件框架

github地址:https://github.com/Qihoo360/DroidPlugin DroidPlugin 是360手机助手在Android系统上实现了一种新的插件机制:它可以在无需安装.修改的情况下运行APK文件,此机制对改进大型APP的架构,实现多团队协作开发具有一定的好处. 定义: HOST程序:插件的宿主. 插件:免安装运行的APK 限制和缺陷: 无法在插件中发送具有自定义资源的Notification,例如: a. 带自定义RemoteLayout的Notificatio

Android插件实例——360 DroidPlugin具体解释

在中国找到钱不难,但你的一个点子不意味着是一个创业.你谈一个再好的想法,比方我今天谈一个创意说,新浪为什么不收购GOOGLE呢?这个创意非常好.新浪一收购GOOGLE.是不是新浪就变成老大了?你从哪儿弄来钱?怎么去整合GOOGLE呢: 之前写过有关于Android 插件方向的文章,解析了一下Android的插件原理与执行方式.非常多小伙伴都问我.为什么不把我制作的插件放到Github上,让大家共享一下. 我仅仅能说.大哥啊,这个插件是我在公司研发的时候制作的,商业机密.不能开源啊. 刚好.近期逛

Android插件实例——360 DroidPlugin详解

在中国找到钱不难,但你的一个点子不意味着是一个创业.你谈一个再好的想法,比如我今天谈一个创意说,新浪为什么不收购GOOGLE呢?这个创意很好.新浪一收购GOOGLE,是不是新浪就变成老大了?你从哪儿弄来钱?怎么去整合GOOGLE呢: 之前写过有关于Android 插件方向的文章,解析了一下Android的插件原理与运行方式.很多小伙伴都问我,为什么不把我制作的插件放到Github上,让大家共享一下. 我只能说,大哥啊,这个插件是我在公司研发的时候制作的,商业机密,不能开源啊. 刚好,最近逛git

Android插件化(使用Small框架)

github: https://github.com/cayden/MySmall Android插件化(使用Small框架) 框架源代码 1. Create Project File->New->New Project... 1.1 Configure your new project 假设宿主包名为com.example.mysmall 设置Application name为MySmall 改动Company Domain为com.example.mysmall 这步是个技巧,在Step3

android插件化-获取apkplug框架已安装插件-03

上一篇文章成功的将apkplug框架嵌入了应用中并且启动 链接http://www.apkplug.com/blog/?post=10 这一篇文章实现如何获取所有已安装插件 一 获取框架的SystemBundle的上下文BundleContext apkplug框架启动会自动创建一个SystemBundle, 它是框架的第一个插件不可停止和卸载,通过它我们可以与apkplug和其他插件通信 FrameworkInstance.getSystemBundle() 便可以获取到SystemBundl

android插件化-apkplug框架启动-02

本文章基于apkplug v1.6.7 版本编写,最新方式以官网最新消息为准 一 apkplug框架所需要的库文件(宿主) 可从http://git.oschina.net/plug/apkplugSDK  获取最新库文件 同时可下载最新的apkplugdemo源码 http://git.oschina.net/plug/apkplugDemos libs-- --libndkfoo.so   armeabi armeabi-v7a mips x86 --Bundle(版本号).jar 将以上的

android插件化-apkplug框架基本结构-01

由于框架开发更新频繁的原因一直都没有时间写出框架的基本架构让大家云里雾里的,现在框架已基本稳定和完善,我就抽出时间写写关于apkplug框架的基本架构和原理,同时也跟大家一起研究利用apkplug框架玩出更新的功能. 一 apkplug的基本架构 apkplug简单的说是一个容器它将apk文件解析并映射成Bundle ,下文我们简称Bundle为插件.如下图 每一个apk插件被映射到apkplug框架中就是一个Bundle对象,完整路径为 org.osgi.framework.Bundle .通

Android插件化框架

1.   dynamic-load-apk/DL动态加载框架 是基于代理的方式实现插件框架,对 App 的表层做了处理,通过在 Manifest 中注册代理组件,当启动插件组件时,首先启动一个代理组件,然后通过这个代理组件来构建,启动插件组件. 需要按照一定的规则来开发插件 APK,插件中的组件需要实现经过改造后的 Activity.FragmentActivity.Service 等的子类. 优点如下: 动态升级, 高效并行开发(编译速度更快) 按需加载,内存占用更低等等DynamicLoad