详解Android插件化-RePlugin项目集成与使用

来源:爱站网时间:2019-12-11编辑:网友分享
在实际的项目开发过程中,我们经常会遇到与各种第三方应用的对接,在实际的产品中,我们也开发了SDK来方便第三方的二次开发,那接下来大家一起去看看详解Android插件化-RePlugin项目集成与使用吧!

在实际的项目开发过程中,我们经常会遇到与各种第三方应用的对接,在实际的产品中,我们也开发了SDK来方便第三方的二次开发,那接下来大家一起去看看详解Android插件化-RePlugin项目集成与使用吧!

1.什么是RePlugin?

在Android开发领域,有关插件化的讨论一直热度不减。目前市面上的插件化方案虽然很多,但多数只能实现某些功能的插件化,距离开发者的预期尚有相当差距。对此,在近期GMTC全球移动技术大会上,360手机卫士主程序架构负责人张炅轩宣布,360的插件化框架RePlugin已经可以实现“全面插件化”,同时具有出色的稳定性和灵活性,可适用于各种类型的应用上。
“RePlugin预计7月份开源,这将是我们献给安卓世界最好的礼物。”360如是说。

2.RePlugin有什么用?

RePlugin是一套完整的、稳定的、适合全面使用的,占坑类插件化方案,由360手机卫士的RePlugin Team研发,也是业内首个提出”全面插件化“(全面特性、全面兼容、全面使用)的方案。

3.RePlugin官方介绍

其主要优势有:

  1. 极其灵活:主程序无需升级(无需在Manifest中预埋组件),即可支持新增的四大组件,甚至全新的插件
  2. 非常稳定:Hook点仅有一处(ClassLoader),无任何Binder Hook!如此可做到其崩溃率仅为“万分之一”,并完美兼容市面上近乎所有的Android ROM
  3. 特性丰富:支持近乎所有在“单品”开发时的特性。包括静态Receiver、Task-Affinity坑位、自定义Theme、进程坑位、AppCompat、DataBinding等
  4. 易于集成:无论插件还是主程序,只需“数行”就能完成接入
  5. 管理成熟:拥有成熟稳定的“插件管理方案”,支持插件安装、升级、卸载、版本管理,甚至包括进程通讯、协议版本、安全校验等
  6. 数亿支撑:有360手机卫士庞大的数亿用户做支撑,三年多的残酷验证,确保App用到的方案是最稳定、最适合使用的

一、集成主工程

1、在项目根目录的 build.gradle 下添加 RePlugin Host Gradle 依赖:

buildscript {
  repositories {
    jcenter()
  }
  dependencies {
    classpath 'com.android.tools.build:gradle:2.3.3'
    // 1、添加RePlugin Host Gradle依赖
    classpath 'com.qihoo360.replugin:replugin-host-gradle:2.2.1'
  }
}

2、在 app/build.gradle 下添加 RePlugin Host Library 依赖(为了更清晰的表示出代码添加的位置,将原有代码也一并贴出):
apply plugin: 'com.android.application'

android {
  compileSdkVersion 26
  buildToolsVersion "26.0.1"
  defaultConfig {
    applicationId "cn.codingblock.repluginstudy"
    minSdkVersion 21
    targetSdkVersion 26
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
  }
  buildTypes {
    release {
      minifyEnabled false
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
  }
}

apply plugin: 'replugin-host-gradle'// 集成 RePlugin 添加的配置

// 集成 RePlugin 添加的配置
repluginHostConfig {
  useAppCompat = true // 如果项目需要支持 AppComat,则需要将此配置置为 true
  // 如果应用需要个性化配置坑位数量,则需要添加以下代码进行配置
//  countNotTranslucentStandard = 6
//  countNotTranslucentSingleTop = 2
//  countNotTranslucentSingleTask = 3
//  countNotTranslucentSingleInstance = 2
}

dependencies {
  compile fileTree(dir: 'libs', include: ['*.jar'])
  androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'
  })
  compile 'com.android.support:appcompat-v7:26.+'
  compile 'com.android.support.constraint:constraint-layout:1.0.2'
  compile 'com.qihoo360.replugin:replugin-host-lib:2.2.1' // 集成 RePlugin 添加的配置
  testCompile 'junit:junit:4.12'
}

以上代码有三点需要注意:

  1. 需要将 apply plugin: 'replugin-host-gradle' 放在 android {...} 之后。
  2. 如果项目需要支持 AppComat,则需要将 repluginHostConfig 的 userAppCompat 置为 true。
  3. 如果应用需要个性化配置坑位数量,则需要在 repluginHostConfig 中添加以下代码进行配置:
countNotTranslucentStandard = 6

countNotTranslucentSingleTop = 2

countNotTranslucentSingleTask = 3

countNotTranslucentSingleInstance = 2 

3、让工程的 Application 直接继承自 RePluginApplication:

public class MyApplication extends RePluginApplication { } 

当然,同时不要忘了在 AndroidManifest 对 MyApplication 的相关配置。

说明:有时候由于项目原有结构的需要,我们可能不能直接使用继承 RePluginApplication 的方式,这个问题看来 RePlugin 开发者也想到了,所以还特地多了一种选择,下面是项目的 Application 不继承 RePluginApplication 的方式:

public class MyApplication 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();
    RePlugin.App.onLowMemory();
  }

  @Override
  public void onTrimMemory(int level) {
    super.onTrimMemory(level);
    RePlugin.App.onTrimMemory(level);
  }

  @Override
  public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    RePlugin.App.onConfigurationChanged(newConfig);
  }
}

二、集成插件

新建一个工程做为插件APP,这里为了方便起见,直接在主工程中新建了一个 Module。

1、同集成主工程类似,在根目录的 build.gradle 添加 RePlugin Plugin Gradle 依赖(若是单独创建插件工程,则不需要添加注释1下面的代码):

buildscript {
  repositories {
    jcenter()
  }
  dependencies {
    classpath 'com.android.tools.build:gradle:2.3.3'
    // 1、添加RePlugin Host Gradle依赖(主工程用)
    classpath 'com.qihoo360.replugin:replugin-host-gradle:2.2.1'
    // 2、添加RePlugin Plugin Gradle依赖(插件工程用)
    classpath 'com.qihoo360.replugin:replugin-plugin-gradle:2.2.1'
  }
}

2、在 app/build.gradle 中添加 replugin-plugin-gradle 插件和 replugin-plugin-lib 依赖:

apply plugin: 'com.android.application'

android {
  ...
}

apply plugin: 'replugin-plugin-gradle' // 集成 RePlugin 添加的配置

dependencies {
  compile fileTree(dir: 'libs', include: ['*.jar'])
  androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'
  })
  compile 'com.android.support:appcompat-v7:26.+'
  compile 'com.android.support.constraint:constraint-layout:1.0.2'
  compile 'com.qihoo360.replugin:replugin-plugin-lib:2.2.1' // 集成 RePlugin 添加的配置
  testCompile 'junit:junit:4.12'
}

三、管理插件

RePlugin 对插件定义两种方式一种是外置插件、一种是内置插件。

  1. 外置插件:即从网络下载或者从SD卡中获得的,以 .apk 结尾。
  2. 内置插件:内置于 APP 之中,并随 APP 一并发版,需要将插件 apk 改成 .jar 结尾放入主程序的assets/plugins目录。

(一)外置插件的安装(升级)、启动、卸载

安装插件:

PluginInfo pluginInfo = RePlugin.install(Environment.getExternalStorageDirectory().getPath().toString() + "/plugin1.apk");

System.out.println(pluginInfo); 

同时别忘了添加文件读写的权限。 输出日下:

 

 

10-30 16:10:23.769 20280-20280/cn.codingblock.repluginstudy I/System.out: PInfo { <1>""""""""""""""""""""""""

 

 

 

 

 

 


 

 

 

""""

 

 

""""

 

 

""""""

 


 

 

 

 

 

""

 


 

 

<1>"""""""""""""""""""""""""">

 

“”

 

 

  1.  
  2.  

 

 

以上就是爱站技术频道小编给大家介绍的详解Android插件化-RePlugin项目集成与使用,看完这篇文章,大家赶快去操作看看,有任何问题及时反馈给小编哦。

上一篇:详解Android开发中的重力传感器用法实例

下一篇:Android中Glide库的使用小技巧

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载