關於資原始檔訪問的類是Resources和AssetManager,Apk安裝完成後,資源的路徑就可以指向這個apk檔案了(相當於把這個apk的路徑新增到資源路徑中),就可以取得需要的資源。
dex檔案也是通過DexClassLoader來載入的,所以如果我們在程式中使用載入器載入指定的dex檔案,就可以實現動態載入了。Facebook分dex包也是基於這種方式來做的。至於為什麼要分多個dex檔案,原因如下:
因為一個應用的功能會越來越多,隨著工程越來越大,程式碼量也會越來越多,但是Android方法數量不能超過65K,如果超出之後,將會丟擲Conversion to Dalvik format failed:Unable to execute dex:method ID not in[0,0xffff]65536。由於Android系統中,一個Dex檔案中儲存方法的id用的是short型別資料,所以導致你的dex中方法數不能超過65K。可以通過去掉無用的jar包,或者將一些屬性設定為public,從而可以去掉get/set方法來壓縮方法數量。
Reference: