Android RePlugin插件化实践

插件化遇到的问题

最近公司老板提了个需求就是功能定制,不要升级apk就可达到更新的效果。于是乎各种填坑之路。

问了一下度娘,阿里的配置复杂比较麻烦直接pass调了,而small简单配置吸引了我,说干就干。结果还是失败了,主要有以下几点原因:

  1. 本人只在本地安装成功过,线上版本一直没成功,可能是我自身原因导致。
  2. small每次装插件都会有多少装多少,这点麻烦对于我们的需求不符合。
  3. small好像没有判断该插件有没有安装的机制,所以不能针对性升级。

以上几点可能是我个人原因,如有知道的大神麻烦告知,谢谢!。

说了一堆屁话,开始讲讲我怎么使用RePlugin插件化的,该框架是360的,所以其稳定性大家可以自行百度,咱就不赘述了。

RePlugin的使用

  1. 宿主的配置

  •      首先需要配置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" />//这是插件的版本
到这里你就可以直接像开发app一样开发插件了,像正常打包一样生成apk。
3.插件的安装

  • 咱先将打包生成的apk放到sdcard下,线上版本其实就差不多了,只是多了个下载过程,自行实现。安装如下:
  RePlugin.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并不能跳转,看下面代码:

 if (RePlugin.isPluginInstalled("plugin")) {
      RePlugin.startActivity(SetActivity.this, RePlugin.createIntent("plugin", "com.xf.demo.activity.MainActivity"));
     } 

就这么简单,当然还有什么返回值啊啥的,下面有官方文档地址,自行查找,这里只是入门和本人遇到的坑记录,插件跳转宿主是可以用action的。

最后注意,插件也可以有application的,后面将会讲到本人在插件和宿主之间的通信,以及在application中初始化的一些问题,链接:点击打开链接

附上官方稳当地址:点击打开链接


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值