RePlugin框架怎么在Android中使用?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
<强> 1。应用场景强>
Android开发人员不多,又要求使用插件化开发的模式。(简单点讲就是自己需要写宿主应用,还多有N个插件需要开发)
如下图:
buildscript { ,…… ,dependencies { classpath 才能;& # 39;com.android.tools.build: gradle: 2.3.3 # 39;,,//插才能件化框架,宿主工程所需依赖 classpath 才能;& # 39;com.qihoo360.replugin: replugin-host-gradle: 2.2.0 # 39; ,,//插件化框架,插件工程所需依赖 classpath 才能;& # 39;com.qihoo360.replugin: replugin-plugin-gradle: 2.2.0 # 39; ,,… ,} ,…… }
2.2宿主应用程序的构建。gradle文件中添加
//replugin插件化框架,这一行建议就放在依赖项的上面,千万不要放在android {…}的上面
应用插件:& # 39;replugin-host-gradle& # 39;
dependencies { ,compile fileTree(包括:,(& # 39;* . jar # 39;],, dir:, & # 39;填词# 39;) ,…… ,releaseCompile 项目(路径:& # 39;:图书馆的模组名字& # 39;,,配置:,& # 39;发布# 39;) ,,debugCompile 项目(路径:& # 39;:图书馆的模组名字& # 39;,,配置:,& # 39;调试# 39;) ,compile & # 39; com.qihoo360.replugin: replugin-host-lib: 2.2.0 # 39; ,…… }
2.3插件模组对应的构建。gradle文件中添加
//replugin插件化框架,这一行建议就放在依赖项的上面,千万不要放在android {…}的上面
apply 插件:,& # 39;replugin-plugin-gradle& # 39; repluginPluginConfig {=,pluginName “你自己的插件名字“;=,hostApplicationId “宿主包名,=,hostAppLauncherActivity “宿主包名.MainActivity" } dependencies { ,…… ,releaseCompile 项目(路径:& # 39;:图书馆的模组名字& # 39;,,配置:,& # 39;发布# 39;) ,debugCompile 项目(路径:& # 39;:图书馆的模组名字& # 39;,,配置:,& # 39;调试# 39;) ,compile & # 39; com.qihoo360.replugin: replugin-plugin-lib: 2.2.0 # 39; ,…… }
<强> 3。宿主及所有插件使用到的库,这里建议自己做成一个模组,配置方法上面的代码理由了(库的模组名字)
如有依赖的冲突,在对应模组中添加强>
android { ,…… ,configurations.all { ,resolutionStrategy.eachDependency {DependencyResolveDetails details → def 才能;requested =details.requested if 才能;(requested.group ==, & # 39; com.android.support& # 39;), { ,,if (! requested.name.startsWith (“multidex")), { ,,,details.useVersion & # 39; 25.3.1& # 39;//这里可根据个人需要改成自己想要的版本 ,,} ,,} ,} } … }
<>强4。关于调试以及成品包。
强>
调试时有几个模组,就安装几个应用,调用的地方
if (! BuildConfig.DEBUG),{//非调试成品包 ,if (RePlugin.isPluginInstalled(“插件包名“)),{//已才能安装 Intent 才能;intentHasInstall =, RePlugin.createIntent(“插件包名,,, ,,,“插件包名.MainActivity"); intentHasInstall.putExtras才能(包); RePlugin.startActivity才能(mContext, intentHasInstall); 其他,,}{//没有安装,自己写下载的代码} }else {//调试模式 Intent intent1 =, new 意图(); intent1.setComponent (new ComponentName(“插件包名,,,“插件包名.MainActivity")); intent1.putExtras(包); startActivity (intent1); }
<强> 5。关于FileProvider 强>
5.1这个首先公用图书馆的那个模组要有一个公用的效用,并且每个模组(插件或宿主)都初始化此工具类