1. 程式人生 > >Android外掛化框架--360RePlugin基本使用

Android外掛化框架--360RePlugin基本使用

360RePlugin是360公司推出的外掛化框架

一、先看效果圖:

二、程式碼實現:

1.主程式開發:專案的Gradle的dependencies中新增:

classpath 'com.qihoo360.replugin:replugin-host-gradle:2.2.4'

2.app模組下的build.gradle中的dependencies中新增:

implementation 'com.qihoo360.replugin:replugin-host-lib:2.2.4'

3.app模組下的build.gradle中的android{}之後新增:

apply plugin: 'replugin-host-gradle'
repluginHostConfig {
    useAppCompat = true
}

useAppCompat = true表示應用需要支援AppCompat

4.自己的Application類中新增:

@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    RePlugin.App.attachBaseContext(this);
}

@Override
public void onCreate() {
    super.onCreate();
    RePlugin.App.onCreate();
}

如果app模組下的build.gradle中的minSdkVersion <= 14還需要新增以下幾行,minSdkVersion > 14的就不用添加了:

@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 config) {
    super.onConfigurationChanged(config);
    RePlugin.App.onConfigurationChanged(config);
}

如果是新建的MyApplication,不要忘了在Manifest中配置Application

<application
    android:name=".MyApplication"
    ...>

5.外掛開發:新建一個專案,5.1步、5.2步和前面的1、2步類似,只是host換成了plugin:

5.1.專案的Gradle的dependencies中新增:

classpath 'com.qihoo360.replugin:replugin-plugin-gradle:2.2.4'

5.2.app模組下的build.gradle中的dependencies中新增:

implementation 'com.qihoo360.replugin:replugin-plugin-lib:2.2.4'

5.3第3步.app模組下的build.gradle中的android{}之後新增:

apply plugin: 'replugin-plugin-gradle'

這樣就可以像開發普通app一樣開發外掛了。

6.主程式和外掛互相呼叫Activity

6.1主程式呼叫外掛中的Activity:

Intent intent = RePlugin.createIntent("host", "com.sample.testhost.MainActivity");
RePlugin.startActivity(MainActivity.this,intent);
finish();

RePlugin.createIntent(String pluginName , String cls)中的第一個引數是外掛名字,第二個引數是外掛的Activity,這個Activity需要帶上外掛的完整包名

6.2外掛呼叫主程式中的Activity:

Intent intent = new Intent();
intent.setComponent(new ComponentName("com.sample.test360replugin", "com.sample.test360replugin.MainActivity"));
startActivity(intent);
finish();

ComponentName(String pkg , String cls)中的第一個引數是主程式的包名,第二個引數是主程式的Activity,這個Activity需要帶上主程式的完整包名

7.將外掛程式生成jar並加入主程式:

在Android Studio中點選build -> Build APK(s),將外掛程式打包出來

將生成的app-debug.apk重新命名為host.jar,這個host就是外掛名字,6.1中用的就是這個名字,可以自己命名,只要保證使用的時候與之對應即可。將此jar放在主程式的assets/plugins資料夾中

大功告成,原始碼已上傳: