Android Kitkat系列文章—OAT文件分析—Part1
|
1 | I/art ( 123): GenerateImage: /system/bin/dex2oat --image=/data/dalvik-cache/system@framework@boot.art@classes.dex--runtime-arg-Xms64m--runtime-arg-Xmx64m--dex-file=/system/framework/core-libart.jar--dex-file=/system/framework/conscrypt.jar--dex-file=/system/framework/okhttp.jar--dex-file=/system/framework/core-junit.jar--dex-file=/system/framework/bouncycastle.jar--dex-file=/system/framework/ext.jar--dex-file=/system/framework/framework.jar--dex-file=/system/framework/framework2.jar--dex-file=/system/framework/telephony-common.jar--dex-file=/system/framework/voip-common.jar --dex-file=/system/framework/mms-common.jar --dex-file=/system/framework/android.policy.jar --dex-file=/system/framework/services.jar --dex-file=/system/framework/apache-xml.jar --dex-file=/system/framework/webviewchromium.jar --oat-file=/data/dalvik-cache/system@framework@boot.art@classes.oat--base=0x60000000--image-classes-zip=/system/framework/framework.jar--image-classes=preloaded-classes |
system_server啟動(dòng)后在log中顯示為“art”的這個(gè)進(jìn)程,通過(guò)dex2oat工具創(chuàng)建了一個(gè)巨大的“鏡像”文件。命令行參數(shù)映射包含下面幾部分:
在創(chuàng)建鏡像期間,所有已包含在內(nèi)的dex文件會(huì)被編譯。例如:
1 | W/dex2oat ( 397): Verification of void org.ccil.cowan.tagsoup.HTMLSchema.<init>() took 187.968ms |
看起來(lái)很熟悉,對(duì)不對(duì)?記得dalvik驅(qū)動(dòng)環(huán)境中的zygote吧?基本情況是,樣版鏡像運(yùn)行了事實(shí)上的應(yīng)用、代碼以及那些被頻繁使用的類??梢悦鞔_的是,xygote沒(méi)有被取代,它依然存在于ART環(huán)境中,你可以用跟dalvik一樣的方式來(lái)處理它。
在更早的啟動(dòng)過(guò)程中,包管理器在每一個(gè)已安裝的應(yīng)用中運(yùn)行dexopt。但除此之外,dex2oat編譯器會(huì)把每一個(gè)已經(jīng)產(chǎn)生的dex文件編譯成oat文件。
1 2 | I/PackageManager( 559): Running dexopt on: com.android.inputmethod.latinI/dex2oat ( 918): dex2oat: /data/dalvik-cache/system@app@LatinIME.apk@classes.dex |
好吧?,F(xiàn)在讓我們總結(jié)一下目前為止我們所了解到的內(nèi)容:我們知道ART使用了zygote,就像鏡像一樣,之后很可能執(zhí)行了實(shí)際的應(yīng)用程序。同時(shí)它也進(jìn)行了大量的編譯,甚至是對(duì)框架類的編譯。這意味著著從字面上看,我們熟知的Android整個(gè)系統(tǒng)都被改變了。我認(rèn)為這是一個(gè)暗示:ART不僅僅是一個(gè)“更好的Dalvik”——還意味著范例上的一個(gè)改變。
但是現(xiàn)在,我已經(jīng)開(kāi)始準(zhǔn)備該系列的下一篇。在下一篇中我們將進(jìn)一步查看這種新的可執(zhí)行文件格式:OAT文件分析。
|
|