Android插件化方案 RePlugin/README_CN.md at dev · Qihoo360/RePlugin · GitHub

标签: android 插件 replugin | 发表时间:2017-10-19 11:06 | 作者:
出处:https://github.com

RePlugin Logo

licenseRelease Version

RePlugin —— 历经三年多考验,数亿设备使用的,稳定占坑类插件化方案

RePlugin是一套完整的、稳定的、适合全面使用的,占坑类插件化方案,由360手机卫士的RePlugin Team研发,也是业内首个提出”全面插件化“(全面特性、全面兼容、全面使用)的方案。

其主要优势有:

  • 极其灵活:主程序无需升级(无需在Manifest中预埋组件),即可支持新增的四大组件,甚至全新的插件
  • 非常稳定:Hook点仅有一处(ClassLoader),无任何Binder Hook!如此可做到其崩溃率仅为“万分之一”,并完美兼容市面上近乎所有的Android ROM
  • 特性丰富:支持近乎所有在“单品”开发时的特性。包括静态Receiver、Task-Affinity坑位、自定义Theme、进程坑位、AppCompat、DataBinding等
  • 易于集成:无论插件还是主程序,只需“数行”就能完成接入
  • 管理成熟:拥有成熟稳定的“插件管理方案”,支持插件安装、升级、卸载、版本管理,甚至包括进程通讯、协议版本、安全校验等
  • 数亿支撑:有360手机卫士庞大的数亿用户做支撑,三年多的残酷验证,确保App用到的方案是最稳定、最适合使用的

截止2017年6月底,RePlugin的:

特性描述
插件数103(核心57个)
插件占应用比高达83%
年发版次数高达596次(工作日均2次)
崩溃率万分之一(0.01%),极低
时间2014年应用,3年验证

目前360公司几乎所有的亿级用户量的APP,以及多款主流第三方APP,都采用了RePlugin方案。

有关RePlugin的详细介绍,请点击这里阅读《RePlugin 官方 WiKi》

我们还支持以下特性

特性描述
组件四大组件(含静态Receiver)
升级无需改主程序Manifest完美支持
Android特性支持近乎所有(包括SO库等)
TaskAffinity & 多进程支持(坑位方案
插件类型支持自带插件(自识别)、外置插件
插件间耦合支持Binder、Class Loader、资源等
进程间通讯支持同步、异步、Binder、广播等
自定义Theme & AppComat支持
DataBinding支持
安全校验支持
资源方案独立资源 + Context传递(相对稳定)
Android 版本API Level 9+ (2.3及以上)

愿景

让插件化能飞入寻常应用家,做到稳定、灵活、自由,大小项目兼用。

RePlugin 架构图

RePlugin Framework

以360手机卫士为例:

  • 系统层——Android:为Android Framework层。只有ClassLoader是Hook的,而AMS、Resources等都没有做Hook,确保了其稳定性。
  • 框架层——RePlugin框架:RePlugin框架层,只有RePlugin是对“上层完全公开”的,其余均为Internal,或“动态编译方案”生效后的调用,对开发者而言是“无需关心”的。
  • 插件层——各插件:“标蓝部分”是各插件,包括大部分的业务插件(如体检、清理、桌面插件等)。而其中“标黄部分”是支撑一个应用的各种基础插件,如WebView、Download、Share,甚至Protobuf都能成为基础插件。

使用方法

RePlugin的使用方法非常简单,大部分情况下和“单品”开发无异。

若您是第一次接触RePlugin,则请点击这里阅读《快速上手》,跟随我们的指引,了解更多的内容。

若您想**了解更多有关RePlugin的玩法,则请点击这里阅读《详细教程》,**了解更多好玩的玩法。

若您想看下RePlugin的Sample工程,进而了解框架的具体用法,则请点击这里查看Sample源代码

若您在接入RePlugin中遇到了任何问题,则请点击这里阅读《FAQ》,相信会有您想要的答案。

已接入RePlugin的应用

我们诚挚期待您成为咱们RePlugin应用大家庭中的一员!

除了360集团旗下的亿级别应用以外,还有一些对稳定要求极其严苛的“金融类”产品,及第三方合作应用也接入了RePlugin(含SDK):

                                                                                                       
360 手机卫士360 手机助手360 手机浏览器花椒相机360 清理大师
360 影视大全J借钱吧海淘1号华润通借了吗
360OS 系统应用360 借条(即将发布)(即将发布)(即将发布)

这里衷心感谢“360手机助手”,以及其它各App团队成员,帮助我们发现了很多需要改进的地方,并给予了非常积极的反馈。您们的鼓励与支持,让咱们的RePlugin能走的更远、更好!

已接入RePlugin的插件

目前已有的插件,可以分为以下几类,供各App开发者参考:

  • 展示插件:如卫士首页(是的,你没看错)、体检、信息流等
  • 业务插件:如清理、骚扰拦截、悬浮窗等
  • 合作插件:如程序锁、免费WiFi、安全桌面等
  • 后台插件:如Push、服务管理、Protobuf等
  • 基础插件:如安全WebView、分享、定位等

截止2017年6月底,这样的插件,我们有103个。衷心希望您能成为这个数字中的新的一员!

贡献自己的力量

我们欢迎任何形式的贡献,并致以诚挚的感谢!

你可以贡献代码、提出问题、编写文档等。有关“贡献”相关的内容,请点击这里阅读《贡献力量》

与我们联系

欢迎您加入到我们的RePlugin微信群、QQ群大家庭。

微信群已超过上限,请进入我们的QQ群

QQ群:653205923

License

RePlugin isApache v2.0 licensed.

相关 [android 插件 replugin] 推荐:

Android插件化方案 RePlugin/README_CN.md at dev · Qihoo360/RePlugin · GitHub

- -
RePlugin —— 历经三年多考验,数亿设备使用的,稳定占坑类插件化方案. RePlugin是一套完整的、稳定的、适合全面使用的,占坑类插件化方案,由360手机卫士的RePlugin Team研发,也是业内首个提出”全面插件化“(全面特性、全面兼容、全面使用)的方案. 极其灵活:主程序无需升级(无需在Manifest中预埋组件),即可支持新增的四大组件,甚至全新的插件.

DexClassLoader 实现 Android 插件加载

- - RincLiu.com
Java 中的 ClassLoader:. Java 中 ClassLoader 用于动态加载 Class 到 JVM,包含. BootstrapClassLoader(C++ 编写,用于加载系统核心类)、 ExtClassLoader(用于加载 lib/ext/ 目录的扩展 API)、 AppClassLoader(加载 CLASSPATH 目录下的类).

《Android插件化技术——原理篇》

- -
| 导语 插件化技术最早从2012年诞生至今,已经走过了5个年头. 从最初只支持Activity的动态加载发展到可以完全模拟app运行时的沙箱系统,各种开源项目层出不穷,在此挑选了几个代表性的框架,总结其中的技术原理. 由于本人水平有限,插件化框架又相当复杂,文中若有错误或者不准确的地方望高手指点.

基于PhoneGap2.9框架的android插件的实现

- - CSDN博客移动开发推荐文章
       PhoneGap平台提供了插件功能,开发者可以将重量级的功能封装在原生代码开发的插件中,并将接口暴露给JavaScript,JavaScript调用插件功能即可完成与本地代码的交互. 开发一个简单的android插件主要分以下几步:. (1)编写JAVA类,继承CordovaPlugin类,如下:.

基于插件开发的Android实现流程

- - CSDN博客推荐文章
转载请注明地址:http://blog.csdn.net/droyon/article/details/20951797. 本文记述“柯元旦”Android内核剖析中基于类装载器的“插件”架构. 1、插件不能独立运行,而必须运行于一个宿主程序中,即由宿主程序去调用插件程序. 3、宿主程序中可以管理不同的插件,包括查看插件的数目,禁用或者使用某个插件.

苏宁 Android App 插件化应用实践

- - IT瘾-dev
从大团队并肩作战到小团队带头冲锋,高效的研发模式使得 App 本身的整体崩溃率始终维持在 0.02% 以下. 从大团队并肩作战到小团队带头冲锋,高效的研发模式使得 App 本身的整体崩溃率始终维持在 0.02% 以下. 本着以用户为中心、以开发者为出发点,根据现有开源方案取长补短,苏宁易购移动开发部于 2017 年初自主研发出了新型插件化技术——APNP(Android Plugin And Play),旨在让研发更敏捷,让发布更灵活,最终满足用户对产品的极速体验、按需下载、动态更新.

Android 使用动态加载框架DL进行插件化开发

- - CSDN博客移动开发推荐文章
如有转载,请声明出处: 时之沙:  http://blog.csdn.net/t12x3456    (来自时之沙的csdn博客).         随着应用的不断迭代,应用的体积不断增大,项目越来越臃肿,冗余增加.项目新功能的添加,无法确定与用户匹配性,发生严重异常往往牵一发而动全身,只能紧急发布补丁版本,强制用户进行更新.结果频繁的更新,反而容易降低用户使用黏性.或者是公司业务的不断发展,同系的应用越来越多,传统方式需要通过用户量最大的主项目进行引导下载并安装..

Android插件化(一):使用改进的MultiDex动态加载assets中的apk

- - CSDN博客推荐文章
Android插件化(一):使用改进的MultiDex动态加载assets中的apk. 为了解决65535方法数超标的问题,Google推荐使用MultiDex来加载classes2.dex,classes3.dex等等,其基本思想就是在运行时动态修改ClassLoader,以达到动态加载类的目的.

jquery 插件

- - JavaScript - Web前端 - ITeye博客
 jQuery插件的开发包括两种:. 一种是类级别的插件开发,即给jQuery添加新的全局函数,相当于给jQuery类本身添加方法. jQuery的全局函数就是属于jQuery命名空间的函数,另一种是对象级别的插件开发,即给jQuery对象添加方法. 下面就两种函数的开发做详细的说明. 1 、类级别的插件开发.

Android 遥控车

- CasparZ - LinuxTOY
您确定您真的会用 Android 手机玩赛车. 16 岁的法国学生 Jonathan Rico 使用 Android 手机通过蓝牙实现了对改装玩具汽车的遥控. 操控的方式和那些标榜的智能手机游戏一样,使用重力感应,差别是这次控制的是现实世界中的遥控汽车. 收藏到 del.icio.us |.