名称 | RePlugin |
---|---|
语言 | Android/Java |
平台 | GitHub |
作者 | 奇虎360(Qihoo360) |
链接 | 点此进入 |
框架介绍及优势
插件化、热修复等是安卓圈最近比较热门的技术,今天小编就为大家介绍一款插件化开发利器——RePlugin。RePlugin 是奇虎360推出的安卓插件化开发框架。插件化,顾名思义即安卓各个功能模块均可以以插件(开发完打包成jar包)的形式开发,每个插件独立工作又能互相通信,大大降低了开发的耦合性,方便开发和管理。以插件化的形式进行管理,好处在于上线、修改、下架功能更为便捷,指示添加、修改、删除jar包即可,只是修改涉及到的jar包即可,不用担心其他插件的运行和影响。
在RePlugin推出来之前,市场也有其他插件化框架,然而RePlugin相较于传统的插件化框架,有其自身的独特优势。其主要优势有:
非常稳定:Hook 点仅有一处(Classloader)。其崩溃率做到仅为“万分之一”,并完美兼容市面上近乎所有的 Android ROM;
特性丰富:支持近乎所有在“单品”开发时的特性,包括静态 Receiver、Task-Affinity、自定义 Theme、进程坑位、AppCompat 等;
进程任意:可让各组件跑在 UI、常驻,甚至是“任意坑位进程”;
易于集成:无论插件还是主程序,只需“数行”就能完成接入;
自由隔离:想隔离就隔离(如不稳定或占资源的插件,易于释放),不想隔离的模块就混用(如各种基础、UI 插件,都跑在 UI 进程内,性能优异) ;
管理成熟:拥有成熟稳定的“插件管理方案”,支持插件安装、升级、卸载、版本管理,甚至包括进程通讯、协议版本、安全校验等;
数亿支撑:有 360 手机卫士庞大的数亿用户做支撑,三年多的残酷验证,确保 App 用到的方案是最稳定、最适合使用的。
框架集成
RePlugin分为两部分,一部分是host,即主工程,承载和管理插件,一部分是plugin,即插件工程,一般APP的功能开发大都可以在插件工程进行开发。
host集成:
- 在主工程根目录的build.gradle文件添加* *replugin-host-gradle,示例代码如下:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
classpath 'com.qihoo360.replugin:replugin-host-gradle:2.1.6'
}
}
- 在 app/build.gradle 中应用 replugin-host-gradle 插件,并添加 replugin-host-lib 依赖:
dependencies {
......
compile 'com.qihoo360.replugin:replugin-host-lib:2.1.6'
......
}
- 在app/build.gradle文件添加配置:
apply plugin: 'replugin-host-gradle'
/**
* 配置项均为可选配置,默认无需添加
* 更多可选配置项参见replugin-host-gradle的RepluginConfig类
* 可更改配置项参见 自动生成RePluginHostConfig.java
*/
repluginHostConfig {
/**
* 是否使用 AppCompat 库
* 不需要个性化配置时,无需添加
*/
useAppCompat = true
/**
* 背景不透明的坑的数量
* 不需要个性化配置时,无需添加
*/
countNotTranslucentStandard = 6
countNotTranslucentSingleTop = 2
countNotTranslucentSingleTask = 3
countNotTranslucentSingleInstance = 2
}
- 配置Application
让工程的 Application 直接继承自 RePluginApplication。如果你的工程已有Application类,则可以将基类切换到RePluginApplication即可。或者也可以用“非继承式”接入。
非继承式接入示例:
public class MainApplication extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
RePlugin.App.attachBaseContext(this);
....
}
@Override
public void onCreate() {
super.onCreate();
RePlugin.App.onCreate();
....
}
@Override
public void onLowMemory() {
super.onLowMemory();
/* Not need to be called if your application's minSdkVersion > = 14 */
RePlugin.App.onLowMemory();
....
}
@Override
public void onTrimMemory(int level) {
super.onTrimMemory(level);
/* Not need to be called if your application's minSdkVersion > = 14 */
RePlugin.App.onTrimMemory(level);
....
}
@Override
public void onConfigurationChanged(Configuration config) {
super.onConfigurationChanged(config);
/* Not need to be called if your application's minSdkVersion > = 14 */
RePlugin.App.onConfigurationChanged(config);
....
}
}
plugin集成:
- 添加 RePlugin Plugin Gradle 依赖
buildscript {
dependencies {
classpath 'com.qihoo360.replugin:replugin-plugin-gradle:2.1.6'
...
}
}
- 添加 RePlugin Plugin Library 依赖
apply plugin: 'replugin-plugin-gradle'
dependencies {
compile 'com.qihoo360.replugin:replugin-plugin-lib:2.1.6'
...
}
以上是对RePlugin的简单介绍,如果你想在自己的项目是用插件化开发,请点击文章开头的项目链接,进入GitHub的项目页进行详细了解。也可通过其RePlugin Wiki详细了解该项目。
如使用过程有问题,可以在下方评论。
相关参考文章
Android 全面插件化 RePlugin 流程与源码解析
全面插件化:RePlugin的使命
Android全面插件化方案-RePlugin踩坑
网友评论