国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

詳解Android插件化-RePlugin項目集成與使用

2020-02-21 17:23:42
字體:
來源:轉載
供稿:網友

在實際的項目開發過程中,我們經常會遇到與各種第三方應用的對接,在實際的產品中,我們也開發了SDK來方便第三方的二次開發,那接下來大家一起去看看詳解Android插件化-RePlugin項目集成與使用吧!

1.什么是RePlugin?

在Android開發領域,有關插件化的討論一直熱度不減。目前市面上的插件化方案雖然很多,但多數只能實現某些功能的插件化,距離開發者的預期尚有相當差距。對此,在近期GMTC全球移動技術大會上,360手機衛士主程序架構負責人張炅軒宣布,360的插件化框架RePlugin已經可以實現“全面插件化”,同時具有出色的穩定性和靈活性,可適用于各種類型的應用上。
“RePlugin預計7月份開源,這將是我們獻給安卓世界最好的禮物?!?60如是說。

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 = 6countNotTranslucentSingleTop = 2countNotTranslucentSingleTask = 3countNotTranslucentSingleInstance = 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項目集成與使用,看完這篇文章,大家趕快去操作看看,有任何問題及時反饋給小編哦。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 夏河县| 东源县| 扬州市| 搜索| 仙桃市| 台南县| 大港区| 嫩江县| 偏关县| 宜丰县| 永吉县| 湖南省| 松桃| 徐水县| 东乡族自治县| 应城市| 高要市| 远安县| 井冈山市| 五莲县| 启东市| 伊宁县| 永昌县| 玛多县| 眉山市| 探索| 平和县| 松潘县| 青川县| 凯里市| 资源县| 平顶山市| 白朗县| 南江县| 安阳市| 丰镇市| 开平市| 江达县| 库伦旗| 巴彦县| 蒙阴县|