1.DexClassLoaderåPathClassLoaderçåºå«
DexClassLoaderåPathClassLoaderçåºå«
pathclassloaderådexclassloaderçåºå«å¦ä¸ï¼
1.DexClassLoaderåPathClassLoaderé½å±äºç¬¦ååäº²å§æ´¾æ¨¡åçç±»å è½½å¨ï¼å 为å®ä»¬æ²¡æéè½½loadClassæ¹æ³ï¼ãä¹å°±æ¯è¯´ï¼å®ä»¬å¨å è½½ä¸ä¸ªç±»ä¹åï¼å廿£æ¥èªå·±ä»¥åèªå·±ä»¥ä¸çç±»å è½½å¨æ¯å¦å·²ç»å è½½äºè¿ä¸ªç±»ã妿已ç»å è½½è¿äºï¼å°±ä¼ç´æ¥å°ä¹è¿åï¼èä¸ä¼éå¤å è½½ã
2.DexClassLoaderåPathClassLoaderå ¶å®é½æ¯éè¿DexFileè¿ä¸ªç±»æ¥å®ç°ç±»å è½½çãè¿ééè¦é¡ºä¾¿æä¸ä¸çæ¯ï¼Dalvikèææºè¯å«çæ¯dexæä»¶ï¼è䏿¯classæä»¶ãå æ¤ï¼æä»¬ä¾ç±»å è½½çæä»¶ä¹åªè½æ¯dexæä»¶ï¼æè å 嫿dexæä»¶ç.apkæ.jaræä»¶ã
3.PathClassLoaderæ¯éè¿æé 彿°new DexFile(path)æ¥äº§çDexFile对象çï¼èDexClassLoader忝éè¿å ¶éææ¹æ³loadDexï¼path,源码单位记账网站源码 outpath, 0ï¼å¾å°DexFile对象ãè¿ä¸¤è çåºå«å¨äºDexClassLoaderéè¦æä¾ä¸ä¸ªå¯åçoutpathè·¯å¾ï¼ç¨æ¥éæ¾.apkå æè .jarå ä¸çdexæä»¶ãæ¢ä¸ªè¯´æ³æ¥è¯´ï¼å°±æ¯PathClassLoaderä¸è½ä¸»å¨ä»zipå ä¸éæ¾åºdexï¼å æ¤åªæ¯æç´æ¥æä½dexæ ¼å¼æä»¶ï¼æè å·²ç»å®è£ çapkï¼å 为已ç»å®è£ çapkå¨cacheä¸åå¨ç¼åçdexæä»¶ï¼ãèDexClassLoaderå¯ä»¥æ¯æ.apkã.jarå.dexæä»¶ï¼å¹¶ä¸ä¼å¨æå®çoutpathè·¯å¾éæ¾åºdexæä»¶ã
4.å¦å¤ï¼PathClassLoaderå¨å 载类æ¶è°ç¨çæ¯DexFileçloadClassBinaryNameï¼èDexClassLoaderè°ç¨çæ¯loadClassãå æ¤ï¼å¨ä½¿ç¨PathClassLoaderæ¶ç±»å ¨åéè¦ç¨â/âæ¿æ¢â.â