没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
1 简介
Lipland 是一个基于 android 系统的轻量级插件框架(Lightweight plug-in framework
for Android),一个 apk 可以免修改、免安装,直接运行在插件系统内,插件可动态网络
下载更新。lipland 开发宗旨是:轻便灵活、简单易用、功能稳定、兼容性好,免修改。
Lipland 在 360 搜索 app 中得到全面应用,几乎每一个稍微独立的入口都是一个插件,
插件的开发团队各不相同,各个插件又在各大不同的产品线中得到复用,有的插件本身也
是一个独立发布的产品。这种插件化技术,为产品的解耦合和复用带来了极高的效益,功
能升级对用户零打扰。
➢ 支持的特性
� 轻便易用,体积小,仅支持 Android 4.0.3 或以上版本,不背历史包袱。
� 插件为一个独立 apk,免修改,免安装,动态更新升级。
� 支持 android 四大组件:Activity、Service、ContentProvider、BroadcastReceiver
� 支持插件 so 加载、Action/Action-Filter、AIDL 等。
� 支持 android 所有的资源定义,不需要任何特殊处理。
� 支持插件与宿主共享 jar 包、共享 so 库的机制,可以很好的为插件瘦身。
� 单进程,用一个独立的插件进程统一管理插件和内存,复杂度低。
� 为保持稳定性和兼容性,lipland 只 hook 了少量的几个关键函数。
➢ 优化特性
1、 预安装处理机制,插件可以实现瞬间加载启动(插件本身逻辑问题除外)。
2、 提供 crash 处理、自动更新、日志处理、监听接口、使宿主可以灵活的管理和
监控插件。
3、 提供插件管理和测试小程序,可以直观的管理插件和测试插件启动性能等。
2 谁在使用
360 搜索
360 语音助手
360 身边生活
360 免费 wifi
360 盖娅
3 插件化案例
360 语音助手(功能与独立版一致)
360 身边生活(功能与独立版一致)
360 导航
360 小说
360 影视
360 视频播放器
滴滴打车
360 看图插件
360 美图
360 扫码
360 天气
360 清理大师
拍题插件
饭补插件
等等
插件在各个项目中复用,也可以作为一个独立应用发布,开发团队各不相同。
4 注意事项
➢ 系统支持
只对 4.0.3 以上的系统支持,不背历史包袱。
➢ 权限声明
插件要用到的权限需要全部在宿主的 AndroidManifest.xml 中声明,插件自身的
声明无效。
➢ 插件进程
所有插件运行在一个独立的进程中,默认为:plugin。也可以改为其他进程。
➢ BroadcastReceiver
插件 Manifest 中定义的 BroadcastReceiver 全部由宿主动态注册,该过程
自动完成。
➢ 外部应用调用
插件中定义的组件 action、ContentProvider 等不能被其他应用直接调用,
但是可以通过宿主作为桥梁间接调用。
➢ RemoteViews、PendingActivity
不支持,如通知栏等。需要宿主提供特定实现,插件进行调用。
➢ 开发环境
插件框架源码工程支持 eclipse 和 gradle,可以编译为 jar 和 aar 包,但为了便于维
护,后期的开发均基于 android studio 和 gradle,建使用 android studio。
5 接入步骤
一、 导入依赖包
插件框架只有一个包,在 gradle 中加入插件框架的 aar 包
dependencies {
compile(name: 'Lipland_v2.0.6', ext: 'aar')
}
repositories {
flatDir {
dirs 'libs'
}
}
如果直接引用源码,则用以下方式:
dependencies {
compile project(':Lipland')
}
二、AndroidManifest.xml 配置
插件框架需要的相关权限和必要配置已经配置在 aar 中了,插件默认运行在:plugin
进 程 , 插 件 更 新 运 行 在 :plugin_update , 如 果 需 要 变 更 , 则 修 改 源 码 里 面 的
AndroidManifest.xml 重新编译即可。
另外,如果需要支持 Content Provider,则需要在宿主 AndroidManifest.xml 中配置
如下内容:
<provider
android:name="com.qihoo.plugin.core.ContentProviderDispatcher"
android:authorities="[packageName].plugin.provider.dispatcher
"
android:exported="false"
android:process=":plugin"
/>
注意,其中的[packageName]一定要换成你的包名
三、初始化
在 Application.onCreate()调用以下代码即可初始化。
PluginManager.setup(app);
调用后,插件框架安装完成。
6 添加插件
6.1 捆包插件
插件框架提供一种捆包插件方式,即把插件捆绑在宿主的 assets 下,这种方式一般
用于体积较小,重要性比较高的插件。体积较大的插件可以直接通过服务器下发。他们
均可以通过升级模块进行版本升级。
捆包插件配置:
先将插件 apk 放在 assets/ plugin/下,然后在
assets/ plugin/default_install.xml 中加入以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<plugins>
<!--
目前 tag、version、fileName 为必配项
-->
<plugin tag="testplugin" version="1.0.1">
<name>测试插件</name>
<packageName>testplugin</packageName>
<desc>测试插件</desc>
<fileName>testplugin-debug.apk</fileName>
</plugin>
<plugin tag="plugin2" version="1.0.2">
<name>测试插件 2</name>
剩余20页未读,继续阅读
张景淇
- 粉丝: 39
- 资源: 277
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0