Migrated repository
Go to file
2017-07-02 12:58:55 +08:00
.github Add .github config files, make template for pr and issues. 2017-06-29 18:08:46 +08:00
replugin-host-gradle The "rpShowPlugins" gradle task optimization 2017-07-02 12:58:55 +08:00
replugin-host-library Update the setting file for replugin-host-library 2017-07-01 04:11:54 +08:00
replugin-plugin-gradle Optimizes: Use all injectors by default. 2017-07-01 12:42:46 +08:00
replugin-plugin-library Add gradle-wrapper.jar file 2017-07-01 04:27:52 +08:00
replugin-sample * gradle 3.3 version required android gradle plugin 2.3.0+. It is not compatible with android gradle plugin verson 2.1.3, downgrade gradle version from 3.3 to 2.14.1 temporarily. 2017-07-01 18:56:59 +08:00
.gitignore * ignore all files in .idea dir 2017-07-01 18:41:42 +08:00
LICENSE Upload the LICENSE file 2017-06-30 01:09:07 +08:00
README.md Update the contents of the README file 2017-07-01 03:26:04 +08:00

RePlugin Logo

license Release Version

RePlugin 彻·底·开·源·啦!

2017年6月30日23:51分RePlugin已完成全部测试,并在保证一切通过的情况下,正式公开源代码!

感谢您们一直以来对关注RePlugin的关注和支持。希望大家能一如既往的支持我们无论是加Star还是提Issue还是未来提PR我们都非常的欢迎。

让“全面插件化”无论大小项目均可使用稳定与灵活兼得时代因RePlugin和您的出现而更加精彩

PSRePlugin Team的全体成员大家辛苦了


RePlugin是一套完整的、稳定的、适合全面使用的占坑类插件化方案。其主要优势有

  • 极其灵活主程序无需升级无需在Manifest中预埋组件即可支持新增的四大组件甚至全新的插件
  • 非常稳定Hook点仅有一处ClassLoader。其崩溃率仅为“万分之一”并完美兼容市面上近乎所有的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源代码

常见问题

以下针对在Issue中提到的“最常见问题”做出回答希望能对您有帮助。

Q您们和360之前发的DroidPlugin的主要区别是什么

A 其实最主要的技术区别就一个:Hook点的多少

DroidPlugin要Hook的点非常多好处是可以让APK“直接运行在主程序中”但代价是失去了一定的稳定性这点非常关键

相反RePlugin只Hook了ClassLoader所以极为稳定且同样支持绝大多数单品的特性。而APK只需要通过我们的Gradle编译无需开发者修改Java Code即可运行在主程序中。但出于稳定性考虑我们不支持也不打算支持“直接将APK不经修改就放到主程序中”。

当然,还有一点,就是使用场景的不同:

DroidPlugin解决的是各个独立功能拼装在一起能够快速发布不需要有任何的交互。目前市面上的一些双开应用和DroidPlugin的思路有共同之处。当然了要做到完整的双开则仍需要大量的修改如Native Hook等。

RePlugin解决的是各个功能模块能独立升级又能需要和宿主之间有一定交互。其宗旨是“允许插件少量修改来换得最佳稳定和灵活”。

另外在项目启动时间上RePlugin最早是2014年中旬用于360手机卫士完整占坑类方案DroidPlugin是2015年下旬用于360手机助手。

Q您们是否支持DataBinding

A 支持。我们有几个插件在用。除此之外我们的Sample工程其Demo2就是用DataBinding做的而Demo1是ButterKnife。您们可以体验一下。

Q插件可以复用主程序的资源吗

A 可以的RePlugin会同时把Host和Plugin的Context传递给插件供开发者选择。

这块儿后续我们还会有文章来专门介绍,敬请期待。

已接入RePlugin的应用

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

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

360 手机卫士 360 手机助手 360 手机浏览器 花椒相机 360 清理大师
360 影视大全 借钱吧 借了吗 海淘一号 华润通
360OS 应用 360借条 你的App 你的App 你的App

其中,360手机助手App——即DroidPlugin的创始团队的应用——现已“全面切换到RePlugin”上

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

已接入RePlugin的插件

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

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

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

贡献自己的力量

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

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

License

RePlugin is Apache v2.0 licensed.