Android应用开发之Android RePlugin插件化实践
凌雪 2018-10-10 来源 :网络 阅读 1780 评论 0

摘要:本文将带你了解Android应用开发之Android RePlugin插件化实践,希望本文对大家学Android有所帮助。

本文将带你了解Android应用开发之Android RePlugin插件化实践,希望本文对大家学Android有所帮助。


插件化遇到的问题
    最近公司老板提了个需求就是功能定制,不要升级apk就可达到更新的效果。于是乎各种填坑之路。
    问了一下度娘,阿里的配置复杂比较麻烦直接pass调了,而small简单配置吸引了我,说干就干。结果还是失败了,主要有以下几点原因:
    本人只在本地安装成功过,线上版本一直没成功,可能是我自身原因导致。small每次装插件都会有多少装多少,这点麻烦对于我们的需求不符合。small好像没有判断该插件有没有安装的机制,所以不能针对性升级。
    以上几点可能是我个人原因,如有知道的大神麻烦告知,谢谢!。
    说了一堆屁话,开始讲讲我怎么使用RePlugin插件化的,该框架是360的,所以其稳定性大家可以自行百度,咱就不赘述了。
RePlugin的使用
    宿主的配置 首先需要配置as的插件,切换到project,然后在最外面的build文件中配置如下代码
classpath   'com.qihoo360.replugin:replugin-host-gradle:2.2.4'
   
    就是在选中的文件里面配置,如下:
   
    然后就是在,app目录下的build.gradle里面配置如下:
    apply plugin: 'replugin-host-gradle'/** * 配置项均为可选配置,默认无需添加 * 更多可选配置项参见replugin-host-gradle的RepluginConfig类 *repluginHostConfig { /**  * 是否使用 AppCompat 库  * 不需要个性化配置时,无需添加  *///   useAppCompat = false// /**//  * 背景不透明的坑的数量//  * 不需要个性化配置时,无需添加//  */ countNotTranslucentStandard =   6 countNotTranslucentSingleTop = 2 countNotTranslucentSingleTask =   3 countNotTranslucentSingleInstance = 2////// // 设置为“不需要常驻进程”// persistentEnable = false}dependencies { compile   fileTree(include: ['*.jar'], dir: 'libs') compile   'com.qihoo360.replugin:replugin-host-lib:2.2.4'}
这里注意这句话apply plugin:   'replugin-host-gradle' 必须放在android{}这个下面,因为它还要获取这个上面的一些配置。
    最后是自定义一个application,简单的就是让你的application继承RePluginApplication,还可以这样
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();  .... } }
   
    2.插件的配置
    插件的话最好另外建一个新项目,不用当前宿主的,因为我就遇到一个坑,宿主更改了代码,跑起来硬是没有变化。
    同上面第一步一样,在最外层build.gradle,加上如下代码:
buildscript { dependencies   {  classpath 'com.qihoo360.replugin:replugin-plugin-gradle:2.2.4'//这是插件必要的,其他你自己的不用删掉 }}
然后在你的插件下的build.gradle文件中配置如下:
apply plugin:   'replugin-plugin-gradle'dependencies { compile   'com.qihoo360.replugin:replugin-plugin-lib:2.2.4'}
注意这个apply plugin:   'replugin-plugin-gradle'也是只能在android{}下面,这个地方其 实就是咱导包的地方。
    最后配置插件的名字,这个重要,我就是被这个坑了,官方文档没说,就代码示例里面有。在你的插件AndroidManifest.xml文件中的application节点里面配置如下代码:
<meta-data   android:name="com.qihoo360.plugin.name"   android:value="plugin">//这里是你的插件名字,随便取,只是装插件的时候你的知道就行  <meta-data   android:name="com.qihoo360.plugin.version.ver"   android:value="1">//这是插件的版本</meta-data></meta-data>
到这里你就可以直接像开发app一样开发插件了,像正常打包一样生成apk。
3.插件的安装
    咱先将打包生成的apk放到sdcard下,线上版本其实就差不多了,只是多了个下载过程,自行实现。安装如下:
?1RePlugin.install("/sdcard/demo.apk");
是不是很简单,但是一定要记得配置读写权限,不然就GG。然后就是安装后你的demo.apk不见了,所以要 重新安装就只能重新push上去。
      升级也是调用上面的代码就不赘述了,但是如果你的插件正在运行的话,他不会立即生效,而是等你下次启动它时才会生效。卸载插件,这里如果没有上面的插件名字配置的话,你这样去卸载就会没作用,反正我是被这么坑过,看下面代码:
    RePlugin.uninstall("plugin");//这里的plugin就是你在插件AndroidManifest配置中的plugin
判断插件是否存在如下:
RePlugin.isPluginInstalled("plugin")
安装插件的安全校验,如下代码:
@Override protected void   attachBaseContext(Context base)   { super.attachBaseContext(base); RePluginConfig c = new   RePluginConfig(); c.setVerifySign(!BuildConfig.DEBUG);//debug环境下是不会校验的 RePlugin.App.attachBaseContext(this,   c);        RePlugin.addCertSignature("379C790B7B726B51AC58E8FCBCFEB586");    //正式环境下要添加合法签名,就是你的插件签名,可以不用和宿主插///件签名一样    }
插件跳转
    从宿主跳转至插件,必须要到插件框架,才能跳,action并不能跳转,看下面代码:
?123if   (RePlugin.isPluginInstalled("plugin"))   {RePlugin.startActivity(SetActivity.this,   RePlugin.createIntent("plugin",   "com.xf.demo.activity.MainActivity"));  }
就这么简单,当然还有什么返回值啊啥的,下面有官方文档地址,自行查找,这里只是入门和本人遇到的坑记录,插件跳转宿主是可以用action的。
    最后注意,插件也可以有application的。    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注移动开发之Android频道!

本文由 @凌雪 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved