美文网首页开源库挖掘&推荐
安卓插件化开发利器RePlugin

安卓插件化开发利器RePlugin

作者: 5afd372c86ba | 来源:发表于2017-09-02 12:03 被阅读253次
    名称 RePlugin
    语言 Android/Java
    平台 GitHub
    作者 奇虎360(Qihoo360)
    链接 点此进入

    框架介绍及优势
    插件化、热修复等是安卓圈最近比较热门的技术,今天小编就为大家介绍一款插件化开发利器——RePlugin。RePlugin 是奇虎360推出的安卓插件化开发框架。插件化,顾名思义即安卓各个功能模块均可以以插件(开发完打包成jar包)的形式开发,每个插件独立工作又能互相通信,大大降低了开发的耦合性,方便开发和管理。以插件化的形式进行管理,好处在于上线、修改、下架功能更为便捷,指示添加、修改、删除jar包即可,只是修改涉及到的jar包即可,不用担心其他插件的运行和影响。
    在RePlugin推出来之前,市场也有其他插件化框架,然而RePlugin相较于传统的插件化框架,有其自身的独特优势。其主要优势有:
    非常稳定:Hook 点仅有一处(Classloader)。其崩溃率做到仅为“万分之一”,并完美兼容市面上近乎所有的 Android ROM;
    特性丰富:支持近乎所有在“单品”开发时的特性,包括静态 Receiver、Task-Affinity、自定义 Theme、进程坑位、AppCompat 等;
    进程任意:可让各组件跑在 UI、常驻,甚至是“任意坑位进程”;
    易于集成:无论插件还是主程序,只需“数行”就能完成接入;
    自由隔离:想隔离就隔离(如不稳定或占资源的插件,易于释放),不想隔离的模块就混用(如各种基础、UI 插件,都跑在 UI 进程内,性能优异) ;
    管理成熟:拥有成熟稳定的“插件管理方案”,支持插件安装、升级、卸载、版本管理,甚至包括进程通讯、协议版本、安全校验等;
    数亿支撑:有 360 手机卫士庞大的数亿用户做支撑,三年多的残酷验证,确保 App 用到的方案是最稳定、最适合使用的。

    框架集成
    RePlugin分为两部分,一部分是host,即主工程,承载和管理插件,一部分是plugin,即插件工程,一般APP的功能开发大都可以在插件工程进行开发。
    host集成:

    1. 在主工程根目录的build.gradle文件添加* *replugin-host-gradle,示例代码如下:
    buildscript {
        repositories {
            jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:2.3.3'
    
            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
            classpath 'com.qihoo360.replugin:replugin-host-gradle:2.1.6'
    
        }
    }
    
    
    1. 在 app/build.gradle 中应用 replugin-host-gradle 插件,并添加 replugin-host-lib 依赖:
    dependencies { 
        ...... 
        compile 'com.qihoo360.replugin:replugin-host-lib:2.1.6'  
        ......
    }
    
    1. 在app/build.gradle文件添加配置:
    apply plugin: 'replugin-host-gradle'
    
    /**
     * 配置项均为可选配置,默认无需添加
     * 更多可选配置项参见replugin-host-gradle的RepluginConfig类
     * 可更改配置项参见 自动生成RePluginHostConfig.java
     */
    repluginHostConfig {
        /**
         * 是否使用 AppCompat 库
         * 不需要个性化配置时,无需添加
         */
        useAppCompat = true
        /**
         * 背景不透明的坑的数量
         * 不需要个性化配置时,无需添加
         */
        countNotTranslucentStandard = 6
        countNotTranslucentSingleTop = 2
        countNotTranslucentSingleTask = 3
        countNotTranslucentSingleInstance = 2
    }
    
    1. 配置Application
      让工程的 Application 直接继承自 RePluginApplication。如果你的工程已有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();
            ....
        }
    
        @Override
        public void onLowMemory() {
            super.onLowMemory();
    
            /* Not need to be called if your application's minSdkVersion > = 14 */
            RePlugin.App.onLowMemory();
            ....
        }
    
        @Override
        public void onTrimMemory(int level) {
            super.onTrimMemory(level);
    
            /* Not need to be called if your application's minSdkVersion > = 14 */
            RePlugin.App.onTrimMemory(level);
            ....
        }
    
        @Override
        public void onConfigurationChanged(Configuration config) {
            super.onConfigurationChanged(config);
    
            /* Not need to be called if your application's minSdkVersion > = 14 */
            RePlugin.App.onConfigurationChanged(config);
            ....
        }
    }
    

    plugin集成:

    1. 添加 RePlugin Plugin Gradle 依赖
    buildscript { 
        dependencies { 
            classpath 'com.qihoo360.replugin:replugin-plugin-gradle:2.1.6' 
            ... 
        }
    }
    
    1. 添加 RePlugin Plugin Library 依赖
    apply plugin: 'replugin-plugin-gradle'
    
    dependencies { 
        compile 'com.qihoo360.replugin:replugin-plugin-lib:2.1.6' 
        ...
    }
    

    以上是对RePlugin的简单介绍,如果你想在自己的项目是用插件化开发,请点击文章开头的项目链接,进入GitHub的项目页进行详细了解。也可通过其RePlugin Wiki详细了解该项目。
    如使用过程有问题,可以在下方评论。

    相关参考文章
    Android 全面插件化 RePlugin 流程与源码解析
    全面插件化:RePlugin的使命
    Android全面插件化方案-RePlugin踩坑

    相关文章

      网友评论

      本文标题:安卓插件化开发利器RePlugin

      本文链接:https://www.haomeiwen.com/subject/nhiljxtx.html