前面講的參數中,有一項是--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都不用。