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æ¶ç±»å ¨åéè¦ç¨â/âæ¿æ¢â.â