Android:插件化

插件化組件化

組件化與插件化的區(qū)別

組件化是Android自然提供的发钝,例如分成lib潦牛,test組件殴瘦。插件化是熱更新袭景。


組件化

如何攔截Activity的啟動(dòng)

hook住單例的IActivity對(duì)象唁桩,攔截他的startActivity方法。
參考:http://www.reibang.com/p/69bfbda302df

應(yīng)用總共有多少個(gè)context耸棒?

context總數(shù)是Activity+service+Application的數(shù)目荒澡。

Activity的Context是什么時(shí)候賦值的?

在performLaunchActivity的時(shí)候与殃,在創(chuàng)建了contextimpl单山,用classloader把Activity對(duì)象創(chuàng)建出來后碍现,調(diào)用Activity的attach方法實(shí)現(xiàn)賦值。


context

應(yīng)用的ClassLoader是從哪里來的米奸?

應(yīng)用ActivityThread啟動(dòng)后昼接,bind上AMS,AMS返回Application info悴晰,這個(gè)Application info包含apk的路徑信息慢睡,應(yīng)用根據(jù)這個(gè)應(yīng)用信息構(gòu)造classloader,這個(gè)classloader位于loadedapk對(duì)象中铡溪。

如何加載另一個(gè)apk的資源漂辐?

構(gòu)造一個(gè)ResourceManager,傳入apk路徑佃却。然后動(dòng)態(tài)加載資源APK者吁,從資源APK中解釋出資源id。利用構(gòu)造的ResourceManager饲帅,傳入資源id复凳,加載進(jìn)來。

java反射有哪些方法

反射獲取類
Class.forName
Class<?> activityThreadClass = Class.forName("android.app.ActivityThread");

反射獲取方法
Class.getdeclaredMetod(obj)
Method currentActivityThreadMethod = activityThreadClass.getDeclaredMethod("currentActivityThread");

反射新建對(duì)象
ActivityManagerNativeClss.newInstance()

反射獲取屬性
Class.getdeclaredField(obj)

反射可以反射final灶泵,private嗎育八?

可以的∩饬冢可以反射pathlist的element數(shù)組來修改classloader實(shí)現(xiàn)插件化髓棋。

xposed是什么原理?

修改system_process,加載jar惶洲,修改Method指向按声。

Android虛擬機(jī)中class和method的數(shù)據(jù)結(jié)構(gòu)是怎樣的?

dvmDecodeIndirectRef是libdvm中的方法恬吕,它可以從java對(duì)象的間接引用獲得ClassObject對(duì)象签则,再根據(jù)slot,用dvmSlotToMethod找到Method對(duì)象铐料。這里的ClassObject和Method都是虛擬機(jī)內(nèi)部用來表示class和Method的數(shù)據(jù)結(jié)構(gòu)渐裂。

java反射的Method和虛擬機(jī)中Method是同一個(gè)嗎?

不是的钠惩。
參考:https://blog.csdn.net/dingjikerbo/article/details/50448145

Art中method的結(jié)構(gòu)是怎樣的柒凉?

jni函數(shù)表保存在全局變量gJniNativeInterface中

const JNINativeInterface gJniNativeInterface = {
  NULL,  // reserved0.
  NULL,  // reserved1.
  NULL,  // reserved2.
  NULL,  // reserved3.
  JNI::GetVersion,
  ......
  JNI::FindClass,
  ......
  JNI::GetStaticMethodID,
  ......
  JNI::CallStaticVoidMethod,
  ......
};

首先需要先查找類
class_linker->FindClass(descriptor.c_str(), cl)

然后加載class,在加載class的時(shí)候篓跛,就加載方法了膝捞。
ClassLinker.LoadClass
LoadMethod
LoadField

然后連接native代碼
LinkCode

https://blog.csdn.net/luoshengyang/article/details/39533503

DEX類和OAT類的有區(qū)別嗎?

virtual方法是什么

virtual方法就是public愧沟,protect方法绑警,有多態(tài)求泰。derect方法就是private方法。

dex文件格式是怎樣的

image.png

如何通過java method找打art method

ArtMethod::FromReflectedMethod

如何替換
Unsafe 和 Memory计盒,可以操作內(nèi)存
https://blog.csdn.net/omnispace/article/details/73320940
https://blog.csdn.net/weelyy/article/details/78906537

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市芽丹,隨后出現(xiàn)的幾起案子北启,更是在濱河造成了極大的恐慌,老刑警劉巖拔第,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件咕村,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡蚊俺,警方通過查閱死者的電腦和手機(jī)懈涛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來泳猬,“玉大人批钠,你說我怎么就攤上這事〉梅猓” “怎么了埋心?”我有些...
    開封第一講書人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)忙上。 經(jīng)常有香客問我拷呆,道長(zhǎng),這世上最難降的妖魔是什么疫粥? 我笑而不...
    開封第一講書人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任茬斧,我火速辦了婚禮,結(jié)果婚禮上梗逮,老公的妹妹穿的比我還像新娘项秉。我一直安慰自己,他們只是感情好库糠,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開白布伙狐。 她就那樣靜靜地躺著,像睡著了一般瞬欧。 火紅的嫁衣襯著肌膚如雪贷屎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,554評(píng)論 1 305
  • 那天艘虎,我揣著相機(jī)與錄音唉侄,去河邊找鬼。 笑死野建,一個(gè)胖子當(dāng)著我的面吹牛属划,可吹牛的內(nèi)容都是我干的恬叹。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼同眯,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼绽昼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起须蜗,我...
    開封第一講書人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤硅确,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后明肮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體菱农,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年柿估,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了循未。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡秫舌,死狀恐怖的妖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情舅巷,我是刑警寧澤羔味,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站钠右,受9級(jí)特大地震影響赋元,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜飒房,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一搁凸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧狠毯,春花似錦护糖、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至献酗,卻和暖如春寝受,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背罕偎。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工很澄, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓甩苛,卻偏偏與公主長(zhǎng)得像蹂楣,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子讯蒲,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

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