插件化框架 RePlugin 的应用:一

时间:2022-03-02 16:33:02

说干就干!

本demo均依据奇虎360官方github账号教程占坑类插件化方案RePlugin进行,有选择性地简化流程,记录问题及感想。

一、将RePlugin接入主程序【地址

第 1 步:添加 RePlugin Host Gradle 依赖

在项目根目录的 build.gradle(注意:不是 app/build.gradle) 中添加 replugin-host-gradle 依赖:

buildscript {
dependencies {
classpath 'com.qihoo360.replugin:replugin-host-gradle:2.1.7'
...
}
}

第 2 步:添加 RePlugin Host Library 依赖

在 app/build.gradle 中应用 replugin-host-gradle 插件,并添加 replugin-host-lib 依赖 :

android {
...
}

apply plugin: 'replugin-host-gradle'

dependencies {
compile 'com.qihoo360.replugin:replugin-host-lib:2.1.7'
...
}

第 3 步:配置 Application 类

让工程的 Application 直接继承自 RePluginApplication。

如果工程已有Application类,则可以将基类切换到RePluginApplication即可。或者也可以用官方介绍的“非继承式”方式接入。

public class MainApplication extends RePluginApplication {
}

既然声明了Application,自然还需要在AndroidManifest中配置这个Application。

<application
android:name=".MainApplication"
... />

二、插件项目的接入配置【地址

插件的接入有两种方式:外置插件和内置插件。官方主要介绍外置插件,但是呢,360这大航母不是平常应用可以比拟的,所以本demo先从内置插件搞起,慢慢来嘛。

无论是内置,还是外置插件,还需理解:不是所有的APK都能作为 RePlugin 的插件并安装进来的,必须要严格按照《插件接入指南》中所述完成接入,其编译出的APK才能成为插件,且这个APK同时也可以被安装到设备中。

接入配置第 1 步:在作为插件的项目中添加 RePlugin Plugin Gradle 依赖

在项目根目录的 build.gradle(注意:不是 app/build.gradle) 中添加 replugin-plugin-gradle 依赖:

buildscript {
dependencies {
classpath 'com.qihoo360.replugin:replugin-plugin-gradle:2.1.7'
...
}
}

接入配置第 2 步:添加 RePlugin Plugin Library 依赖

在 app/build.gradle 中应用 replugin-plugin-gradle 插件,并添加 replugin-plugin-lib 依赖 :

apply plugin: 'replugin-plugin-gradle'

dependencies {
compile 'com.qihoo360.replugin:replugin-plugin-lib:2.1.7'
...
}

三、内置插件【地址

添加一个内置插件是非常简单的,甚至可以“无需任何Java代码”。只需两步即可:

① 将APK改名为:[插件名].jar
② 放入主程序的assets/plugins目录
ps:一般插件打包时需要签名,但是写demo时可以直接拿app\build\outputs\apk下的debug包来做测试运行,实测可用。

这样,当编译主程序时,“动态编译方案”会自动在assets目录下生成一个名叫“plugins-builtin.json”文件,记录了其内置插件的主要信息,方便运行时直接获取。

注意:必须改成“[插件名].jar”后,才能被RePlugin-Host-Gradle识别,进而成为“内置插件”。[插件名]可以是“包名”,也可以是“插件别名”。有关这方面的说明,请点击此处阅读《插件的信息》中“插件命名”一节。

推荐采用插件别名的方式,简便易懂!

要声明插件别名,需要在插件的AndroidManifest.xml中声明以下Meta-data:

<meta-data
android:name="com.qihoo360.plugin.name"
android:value="[你的插件别名]" />

ps:格式可以看官方Sample

插件化框架 RePlugin 的应用:一

四、打开插件的Activity【地址

要打开一个插件的Activity,需要调用 RePlugin.startActivity() 方法。例如:

RePlugin.startActivity(MainActivity.this, RePlugin.createIntent("demo1", 
"com.qihoo360.replugin.sample.demo1.MainActivity"));
// 其中demo1为插件名

这样一个初步的插件化程序就能运行啦,后续将image插件修改成图片选择器什么的,同理还可添加音乐播放器插件等等等等。

demo的github地址:
https://github.com/ZhangZeQiao/RePluginUseDemo.git
https://github.com/ZhangZeQiao/ImagePluginDemo.git

相关文章