RePlugin是360开源的一个插件化开发工具,最近在学习使用,这里记录分享下。
因为刚开始使用,最近只记录用法与可能的坑,源码等以后分析。
官方连接https://github.com/Qihoo360/RePlugin
一.集成使用
插件是有宿主程序与插件程序两种
1、宿主程序配置
第一步、在外部gradle中做一下配置
dependencies {
classpath "com.android.tools.build:gradle:XXX"
//360RePlugin宿主插件
classpath "com.qihoo360.replugin:replugin-host-gradle:XXX"
}
最好是用最新版本,因为一直在更新优化。
第二步、配置宿主app的gradle添加
apply plugin: 'replugin-host-gradle'
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
compile 'com.qihoo360.replugin:replugin-host-lib:xxx'
}
第三步、配置Application
Application有两种配置方法,第一种是直接继承RePluginApplication
另一种是自己写Application
配置如下
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();
RePlugin.App.onLowMemory();
}
@Override
public void onTrimMemory(int level) {
super.onTrimMemory(level);
RePlugin.App.onTrimMemory(level);
}
@Override
public void onConfigurationChanged(Configuration config) {
super.onConfigurationChanged(config);
RePlugin.App.onConfigurationChanged(config);
}
}
2.插件配置
第一步,在外部配置gradle
dependencies {
classpath "com.android.tools.build:gradle:xxx"
//360RePlugin寄主插件
classpath "com.qihoo360.replugin:replugin-plugin-gradle:xxx"
}
如果宿主和插件在一个项目中,那么外部gradle要这么写
dependencies {
classpath "com.android.tools.build:gradle:xxx"
//360RePlugin宿主插件
classpath "com.qihoo360.replugin:replugin-host-gradle:xxx"
//360RePlugin寄主插件
classpath "com.qihoo360.replugin:replugin-plugin-gradle:xxx"
}
第二步、配置插件的gradle
apply plugin: 'replugin-plugin-gradle'
dependencies {
implementation 'com.qihoo360.replugin:replugin-plugin-lib:xxx'
}
这样,插件与宿主的配置就完成了,这是最基础的配置,使用没有问题,如果想自定义请看官方文档
3、使用插件
1.安装插件
插件安装分为内置插件与外置插件
内置插件就是把apk名改为 项目名.jar
然后放到assets/plugins的资源目录中
这样安装应用后就会加载
不过我觉得插件更适合于热更新,与程序扩展,内置到程序中,倒不如直接在程序程序中加入代码
外置插件的安装
直接
RePlugin.install("/sdcard/exam.apk");
指定到你下载的外置插件位置
此为耗时操作,要在子线程中进行
2.升级插件
同样调用
RePlugin.install("/sdcard/exam.apk");
注意。升级插件时,需要插件没启动的情况下,如果插件正在运行,升级将不会成功
3.卸载插件
RePlugin.uninstall("插件名");
卸载插件会在下次开启程序的时候才会卸载成功,本次插件扔能运行
4.预加载插件
RePlugin.preload("插件名");
此步骤可在RePlugin.install("/sdcard/exam.apk");直接调用,预加载以后插件即可快速运行,加载是耗时的,需要时间较长,需要在子线程中加载。
5.运行插件
在预加载完成后,即可调用插件的activity了
Intent intent = new Intent();
intent.setComponent(new ComponentName(packageName, className));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
RePlugin.startActivity(context, intent);
指定包名和类名即可