说干就干!
本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
四、打开插件的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