RePlugin插件化框架之外置插件

_____________________插件端_________________________________

1.在項(xiàng)目根目錄build.gradle下添加

dependencies {

classpath'com.android.tools.build:gradle:2.3.2'

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

}


2.在module下的build.gradle下添加

apply plugin:'replugin-plugin-gradle'

compile 'com.qihoo360.replugin:replugin-plugin-lib:2.1.5'


3.在插件Manifest下添加(否則無法打開插件)

<--插件名稱-->

android:name="com.qihoo360.plugin.name"

android:value="plugin1"/>

<--插件版本-->

android:name="com.qihoo360.plugin.version.ver"

android:value="1"/>


4.插件中打開宿主的activity

Intent intent = new Intent();

intent.setComponent(new ComponentName("com.redfinger.app", "com.redfinger.app.activity.LoginActivity"));

startActivity(intent);


_________________宿主________________________

1.在項(xiàng)目根目錄build.gradle下添加

dependencies {

classpath 'com.android.tools.build:gradle:2.3.2'

compile'com.qihoo360.replugin:replugin-host-lib:2.1.5'

}


2.在module下的build.gradle下添加

apply plugin: 'replugin-host-gradle'//這個(gè)放在Android后面

//如果插件中用到了AppCompactTheme那么還要在當(dāng)前build.gradle中加上

repluginHostConfig {

useAppCompat = true

}

compile 'com.qihoo360.replugin:replugin-plugin-lib:2.1.5'


3.修改Application(注:添加的放在super后的第一行)

@Override

protected void attachBaseContext(Context base) {

super.attachBaseContext(base);

RePlugin.App.attachBaseContext(this);

}

@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);

}


4.安裝更新插件都是同一個(gè)方法install

注:更新時(shí)的插件包要改版本號(hào),不然就是覆蓋(詳見插件端的第3條)更新插件后要重啟APP生效

PluginInfopluginInfo = RePlugin.install("/sdcard/replugin_new.apk");


5.卸載插件

RePlugin.unInstall("plugin01")


6.判斷插件是否安裝

PluginInfoinfo = MP.getPlugin("plugin01", true);


7.宿主打開插件中的四大組件

RePlugin.startActivity(MainActivity.this,RePlugin.createIntent("plugin01", "com.dg.replugindemo01.MainActivity"));

PluginServiceClient.bindService(RePlugin.createIntent( "exam", "AbcService"), mServiceConn);

PluginServiceClient.bindService(RePlugin.createIntent( "exam", "AbcService"), mServiceConn);

PluginProviderClient.query(xxx);


8.宿主調(diào)用插件方法

A)fetchComponentList(String pluginName);//獲取插件的組件列表

ComponentList cl = RePlugin.fetchComponentList(plugin);

B)fetchPackageInfo(String pluginName);//獲取插件的包信息

PluginInfo info=RePlugin.getPluginInfo("");

C)fetchResources(String pluginName);//獲取插件的資源信息

Resources resources=RePlugin.fetchResources("");

D)fetchClassLoader(String pluginName);//獲取插件的ClassLoader對(duì)象

ClassLoader classLoader=RePlugin.fetchClassLoader("");

E)fetchContext(String pluginName);//獲取插件的Context對(duì)象

Context context=RePlugin.fetchContext("");

F)fetchBinder(String pluginName, String module, String process);

//通過插件里的Plugin類,獲取插件定義的IBinder

IBinder binder=RePlugin.fetchBinder("","","");


9.啟動(dòng)选泻、綁定插件的Service

PluginServiceClient.bindService(RePlugin.createIntent(

"exam", "AbcService"),mServiceConn);

10.調(diào)用RePlugin.install()方法冲粤,其返回值就是“新版本插件信息”使用RePlugin.getPlugin()方法,得到的是“當(dāng)前正在運(yùn)行的”插件信息(而非新插件的)


11.在這個(gè)“當(dāng)前正在運(yùn)行的”插件信息上滔金,再調(diào)用getPendingUpdate()方法色解,則可以拿到這個(gè)“新版本插件信息”了。

PluginInfo pi = RePlugin.getPluginInfo("plugin01");

if (pi != null) {

PluginInfo newPi = pi.getPendingUpdate();

if (newPi != null) {

//TODO

} else {

// No update

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末餐茵,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子述吸,更是在濱河造成了極大的恐慌忿族,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蝌矛,死亡現(xiàn)場(chǎng)離奇詭異道批,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)入撒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門隆豹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人茅逮,你說我怎么就攤上這事璃赡。” “怎么了献雅?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵碉考,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我挺身,道長(zhǎng)侯谁,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任章钾,我火速辦了婚禮墙贱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘贱傀。我一直安慰自己惨撇,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布窍箍。 她就那樣靜靜地躺著串纺,像睡著了一般丽旅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上纺棺,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天榄笙,我揣著相機(jī)與錄音,去河邊找鬼祷蝌。 笑死茅撞,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的巨朦。 我是一名探鬼主播米丘,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼糊啡!你這毒婦竟也來了拄查?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤棚蓄,失蹤者是張志新(化名)和其女友劉穎堕扶,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體梭依,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡稍算,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了役拴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片糊探。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖河闰,靈堂內(nèi)的尸體忽然破棺而出科平,到底是詐尸還是另有隱情,我是刑警寧澤淤击,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布匠抗,位于F島的核電站,受9級(jí)特大地震影響污抬,放射性物質(zhì)發(fā)生泄漏汞贸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一印机、第九天 我趴在偏房一處隱蔽的房頂上張望矢腻。 院中可真熱鬧,春花似錦射赛、人聲如沸多柑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)竣灌。三九已至聂沙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間初嘹,已是汗流浹背及汉。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留屯烦,地道東北人坷随。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像驻龟,于是被迫代替她去往敵國(guó)和親温眉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 前言 replugin-plugin-gradle 是 RePlugin 插件框架中提供給replugin插件用的...
    osan閱讀 7,066評(píng)論 8 33
  • afinalAfinal是一個(gè)android的ioc翁狐,orm框架 https://github.com/yangf...
    passiontim閱讀 15,429評(píng)論 2 45
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,116評(píng)論 25 707
  • 迷霧遮住了眼睛 無數(shù)次 在這樣的夜里 我從來 不曾看清 哪一顆才是 你曾經(jīng)最愛的那顆星 就好像我從來 不曾記起 你...
    鰻魚醬紫閱讀 231評(píng)論 0 0
  • “發(fā)霉”的茶葉呈深褐色类溢,茶面上金黃點(diǎn)點(diǎn),遍地開花露懒。好喝還更健康豌骏,可能不少人都喝過 傳統(tǒng)的健康觀是“無病即健康”,現(xiàn)...
    馬紅彥閱讀 299評(píng)論 0 0