InstantRun學(xué)習(xí)筆記

InstantRun編譯時做的事

1、替換我們應(yīng)用的application為BootstrapApplication,同時會修改AndroidMainifest.xml中application為BootstrapApplication,BootstrapApplication將做為一個宿主來加載我們的程序和資源。

2、用asm工具修改我們的類增加靜態(tài)$change變量 。($change為IncrementalChange類型此后我們修改任何類,都將新生成類并實現(xiàn)此接口,像給我們的類添加了個代理類)

3、修改每個方法判斷新增加的變量$change是否為空,如果$change不為空就執(zhí)行$change.access$dispath方法,這個方法通過第一個參數(shù)(即方法簽名)從而確定到補(bǔ)丁 Dex 中的相應(yīng)方法

AndroidInstantRun運(yùn)行時做的事

1、執(zhí)行BootstrapApplication的attachBaseContext方法
修改ClassLoader繼承關(guān)系,用IncrementalClassLoader加載類
2、創(chuàng)建真實的RealApplication(自已的Application)執(zhí)行attachBaseContext方法
3、替換我們應(yīng)用所有的application為realApplication
4、替換我們應(yīng)用所有的mAssets為newAssetManager
5、調(diào)用realApplication的onCreate方法
6、啟動Server,Socket接收patch列表

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

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評論 19 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,253評論 6 342
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,765評論 25 709
  • 我想 陪孩子學(xué)會游泳
    立志做一個壞人閱讀 131評論 0 0
  • 今年來感覺「時間結(jié)束了」的事件有兩個。一是和S斷交。二是得知師傅將為人父。 就是你曾以為到地老天荒也不會更改的定律...
    南言閱讀 201評論 0 0

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