记本人学习RePlugin的使用入门。
RePlugin的github地址
https://github.com/Qihoo360/RePlugin
WIKI地址
https://github.com/Qihoo360/RePlugin/wiki
插件接入指南
首先按照官方写法,在project下的build.gradle中加入
buildscript {
dependencies {
classpath'com.qihoo360.replugin:replugin-plugin-gradle:x.x.x'
//由于作者撰写本篇文章时,RePlugin最新的版本号时2.2.0
//所以我的写法应该是
//classpath'com.qihoo360.replugin:replugin-plugin-gradle:2.2.0'
}
然后在Module下的build.gradle中加入
applyplugin:'replugin-plugin-gradle'
dependencies {
compile'com.qihoo360.replugin:replugin-plugin-lib:x.x.x'
}
在RePlugin 2.1.X时配置方式需要如下配置:
要声明插件别名,需要在插件的AndroidManifest.xml中声明以下Meta-data:
android:name="com.qihoo360.plugin.name"
android:value="[你的插件别名]" />
android:name="com.qihoo360.plugin.version.ver"
android:value="[你的插件版本]" />
然而,RePlugin升级2.2.0后,这一步不需要配置(应该为可配置可不配置,具体还没去了解)。
然后大家将本项目打包成APK后改名为xxx.jar后就可以放进主项目的assets目录下的plugins文件夹下就可以完成插件的步骤了。如图:
主程序接入指南
在项目根目录的 build.gradle(注意:不是 app/build.gradle) 中添加replugin-host-gradle依赖:
buildscript {
dependencies {
classpath'com.qihoo360.replugin:replugin-host-gradle:x.x.x'
}
}
在app/build.gradle中应用replugin-host-gradle插件,并添加replugin-host-lib依赖:
//由于项目超过65535个方法,故需要分包。所以需要在
android {
defaultConfig {
//加入本行代码
multiDexEnabled true;
}
}
applyplugin:'replugin-host-gradle'
//其实此处还有很多可选配置,由于是入门,我们先放下,当务之急是先让我们的程序可以先跑起来。
dependencies {
compile'com.qihoo360.replugin:replugin-host-lib:x.x.x'
}
最后一步配置便是配置 Application 类了:
有两种方式可以实现,由于这只是个简单的Demo,所以我们先选择比较简单的实现方式。
让工程的 Application 直接继承自 RePluginApplication。
如果您的工程已有Application类,则可以将基类切换到RePluginApplication即可。或者您也可以用“非继承式”接入。
publicclassMainApplicationextendsRePluginApplication{
}
既然声明了Application,自然还需要在AndroidManifest中配置这个Application。
android:name=".MainApplication"
/>
到此,我们已经完成了主程序的接入。
接下来就是运行我们的内置插件了
根据官方的最佳实践方法,可将一些启动时必须要加载的,以及经常要用到的内置插件做一次“预加载”。具体做法:
RePlugin.preload("exam");
如图一,我将插件包命名为test.jar,故我们的写法应该是
RePlugin.preload("test");
我们可以将预加载放在起始页面启动一条线程进行,因为预加载相对来说比较耗时。
预加载完成之后,就是插件的运行:
在想要运行插件的方法中加入如下代码即可
RePlugin.startActivity(xxx.this,
RePlugin.createIntent("TEST","com.xx.xxx.xxxActivity"));
//启动插件的方法
/**
* 开启一个插件的Activity
* 其中Intent的ComponentName的Key应为插件名(而不是包名),可使用createIntent方法来创建Intent对象
*@paramcontextContext对象
*@paramintent要打开Activity的Intent,其中ComponentName的Key必须为插件名
*@return插件Activity是否被成功打开?
* FIXME 是否需要Exception来做?
*@see#createIntent(String, String)
*@since1.0.0
*/
public static booleanstartActivity(Context context,Intent intent);
到此,我们的程序已经可以正常运行插件了。
最后非常感谢Qihoo360能开源这么好的框架。
由于作者是第一次写文章,并且文笔非常烂,所以希望大家包含。
您的关注是作者写作的最大动力,祝您阅读愉快。