.github | ||
replugin-host-gradle | ||
replugin-host-library | ||
replugin-plugin-gradle | ||
replugin-plugin-library | ||
replugin-sample | ||
.gitignore | ||
LICENSE | ||
README.md |
RePlugin 彻·底·开·源·啦!
2017年6月30日23:51分,RePlugin已完成全部测试,并在保证一切通过的情况下,正式公开源代码!
感谢您们一直以来对关注RePlugin的关注和支持。希望大家能一如既往的支持我们,无论是加Star,还是提Issue,还是未来提PR,我们都非常的欢迎。
让“全面插件化”(无论大小项目均可使用,稳定与灵活兼得)时代,因RePlugin和您的出现,而更加精彩!
PS:RePlugin 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 架构图
以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.