DroidPlugin新手須知

這個(gè)插件的工程結(jié)構(gòu)是什么樣的?

答:請(qǐng)先導(dǎo)入到Android Studio工程。你會(huì)發(fā)現(xiàn)有兩個(gè)工程,一個(gè)是TestPlugin,它引用了DroidPlugin的庫(kù)工程,通過(guò)代碼簡(jiǎn)單展示了如何使用DroidPlugin;APITest是一個(gè)測(cè)試工程,編譯后可以當(dāng)作插件運(yùn)行在插件系統(tǒng),用來(lái)測(cè)試android的各種api。

2.為什么我集成后,奇數(shù)次可以打開(kāi),偶數(shù)次就打不開(kāi)了?

答:請(qǐng)按照文檔中修改PluginManager.STUB_AUTHORITY_NAME="com.example.droidplugin_stub"的值。

為什么我運(yùn)行demon的時(shí)候安裝不上?

答:如果你安裝了360手機(jī)助手,則是ContentProvider沖突了,請(qǐng)參照文檔第四步修改authorities和PluginManager.STUB_AUTHORITY_NAME。

如何實(shí)現(xiàn)插件和宿主、插件直接的通訊?

答:DroidPlugin系統(tǒng)本身并不提供通訊機(jī)制。如有需要請(qǐng)使用Android系統(tǒng)提供的標(biāo)準(zhǔn)apk之間的通訊方式,如廣播、AIDL等方式。但是目前我正在實(shí)現(xiàn)更優(yōu)雅的通訊方式。

插件和宿主、插件之間如何共享代碼?

答:不行。插件和宿主之間、插件之間都使用了不同的ClassLoader,所以不能互相訪問(wèn)彼此的代碼,即使通過(guò)反射也不行。因?yàn)樵谝恍┣闆r下,插件和宿主可能會(huì)使用相同的開(kāi)源庫(kù),比如support V4,但是使用的版本不一致,如果使用同樣的ClassLoader來(lái)加載,則可能會(huì)因?yàn)殚_(kāi)源庫(kù)的版本不一致導(dǎo)致沖突。

插件和宿主、插件之間如何共享資源?

答:不行。插件和宿主之間、插件之間都使用了不同的AssetManager加載資源,故它們的資源互相隔離,這樣才可以實(shí)現(xiàn)插件免重新打包。只有這樣嚴(yán)格的隔離,才能防止插件和宿主、插件之間的資源id不會(huì)沖突。其它插件則通過(guò)修改aapt,指定生成的資源id段來(lái)解決此事,私以為不夠優(yōu)雅。

7.DroidPlugin支持插件帶一個(gè)so庫(kù)嗎?64位支持如何?

答:支持。64位支持情況請(qǐng)參見(jiàn)我的提交:https://github.com/Qihoo360/DroidPlugin/commit/534a970440ff149f369f5a11611b191523a0ebe7


8.DroidPlugin增加宿主app中所有的權(quán)限

9.host的app中的project.properties文件中增加manifestmerger.enabled=true


10.@Andy Zhang 張總,插件App里面有一個(gè)NFC服務(wù),需要在manifest里面配置aid,但是這個(gè)aid系統(tǒng)讀不到,一直刷不了卡

Andy Zhang? 14:53:18

嗯,對(duì),需要在宿主中配置。

勇敢的少年啊。? 14:53:43

只需要配置aid就行了嗎?

Andy Zhang? 14:55:18

activity都要配置。

Andy Zhang? 14:55:24

這種系統(tǒng)讀的必須要轉(zhuǎn)發(fā)。。

Andy Zhang? 14:55:27

否則不行的

勇敢的少年啊。? 14:57:49

怎么轉(zhuǎn)發(fā)

勇敢的少年啊。? 14:58:45

哦~ 意思就是插件的Activity都要配置在宿主里嗎?


11、您好,DroidPlugin的開(kāi)發(fā)者,想基于DroidPlugin做一些應(yīng)用,現(xiàn)在碰到這個(gè)問(wèn)題:無(wú)法在插件中注冊(cè)一些具有特殊Intent Filter的Service以供Android系統(tǒng)、已經(jīng)安裝的其他APP調(diào)用。? ? 請(qǐng)問(wèn)是否有解決方案了

Andy Zhang? 16:50:05

這個(gè)暫時(shí)不行

Andy Zhang? 16:50:18

只宿主做轉(zhuǎn)發(fā)


12. 先入為主? 16:16:18

宿主完全不能調(diào)用插件的代碼嗎?@Andy Zhang

Andy Zhang? 16:58:58

不能

Andy Zhang? 16:59:15

不可以,除非用contentprovider



Andy Zhang? 10:27:03

1、插件與宿主沒(méi)法共用jar,因?yàn)槿绻灿?,可能?huì)導(dǎo)致插件無(wú)法獨(dú)立運(yùn)行、插件的其它c(diǎn)lass如果跟宿主名稱重復(fù)會(huì)出現(xiàn)沖突、無(wú)法解耦合。

奮斗? 10:27:32

@Andy Zhang? ApkPlug這個(gè)差簡(jiǎn)化,他們 做的就是插件和host運(yùn)行在同一個(gè)進(jìn)程里面的

Andy Zhang? 10:28:20

2、通訊目前只能用android標(biāo)準(zhǔn)協(xié)議,目前正在做更好的費(fèi)那個(gè)事。

奮斗? 10:28:33

@Andy Zhang? 插件的classLoader跟host的classLoader不一樣

Andy Zhang? 10:28:42

3、不運(yùn)行在同一個(gè)進(jìn)程是為了保證穩(wěn)定性和動(dòng)態(tài)升級(jí)。

Andy Zhang? 10:28:45

嗯,對(duì)的。

(∩_∩)Joe? 10:28:57

如果不是要求plugin越小越好,我也不贊成共用

Andy Zhang? 10:29:21

平行空間 也是基于DroidPlugin做的,有大部分代碼是基于DroidPlugin

Andy Zhang? 10:29:37

所以DroidPlugin經(jīng)過(guò)剪裁和修改時(shí)可以支持任何APP的啟動(dòng)的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,940評(píng)論 25 709
  • 一.榜單介紹 排行榜包括四大類: 單一框架:僅提供路由、網(wǎng)絡(luò)層、UI層、通信層或其他單一功能的框架 混合開(kāi)發(fā)框架:...
    偉子男閱讀 5,356評(píng)論 0 161
  • 本文轉(zhuǎn)自:Android博客周刊專題之#插件化開(kāi)發(fā)# 原文作者:陸鎮(zhèn)生_Jomeslu 本人最近研究插件化, 偶然...
    Aegis閱讀 35,692評(píng)論 25 410
  • 最近幾年移動(dòng)開(kāi)發(fā)業(yè)界興起了「 插件化技術(shù) 」的旋風(fēng),各個(gè)大廠都推出了自己的插件化框架,各種開(kāi)源框架都評(píng)價(jià)自身功能優(yōu)...
    斜杠時(shí)光閱讀 4,107評(píng)論 1 36
  • 引言 先簡(jiǎn)單介紹一下Android插件化。很早之前已經(jīng)有公司在研究這項(xiàng)技術(shù),淘寶做得比較早,但淘寶的這項(xiàng)技術(shù)一直是...
    流水潺湲閱讀 12,304評(píng)論 8 149

友情鏈接更多精彩內(nèi)容