天天看點

細說dex2oat(2)

前面講的參數中,有一項是--boot-image。我們先看一下這個boot-image是如何編出來的,正好是一個完整的dex2oat的例子.

我們看下在mediatek mt6753平台下,是如何生成的。

mt6753是64位cortex-a53的架構,是以boot.art也是64位和32位兩套。

先看64位的吧:

初始堆大小和最大堆大小。

預加載類的路徑

以上是一大堆的dex檔案

以上是上面那一大堆dex對應的jar檔案路徑

符号表的位置

輸出檔案有兩個:一個是boot.oat,一個是boot.art。

基位址0x70000000

對于指令架構,除了arm64,更細的是cortex-a53

最後這幾個前面都說過了。

上面都是java和dex,是以跟64位沒有什麼差別。

輸出檔案從arm64目錄換到了arm目錄

基位址沒變,反正patchoat的時候也還要改。

指令集從arm64變成了arm,其它的參數都不變

這兩個值在前面分析android.oat.mak時已經分析過了,這裡驗證了我們的分析是正确的。

這個boot.art就是上一節講的指令剛剛生成的。

輸入的dex檔案

輸出到odex檔案,雖然名字叫odex,但是實際上是個oat。普通的應用就不像上節講的輸出boot.oat和boot.art的時候那樣輸出那麼多了,隻有一個odex檔案,符号表和image都不用。