odex文件生成方法 什么是ODEX?
什么是ODEX?ODEX是安卓上的應(yīng)用程序apk中再提取出的可運(yùn)行文件,還沒(méi)有APK中的文件是從dex優(yōu)化過(guò)程將其優(yōu)化化合一個(gè).odex文件集中存放,原APK中的文件會(huì)保留。這樣做可以減慢軟件的啟動(dòng)速
什么是ODEX?
ODEX是安卓上的應(yīng)用程序apk中再提取出的可運(yùn)行文件,還沒(méi)有APK中的文件是從dex優(yōu)化過(guò)程將其優(yōu)化化合一個(gè).odex文件集中存放,原APK中的文件會(huì)保留。
這樣做可以減慢軟件的啟動(dòng)速度,先行提純,減少對(duì)RAM的占用,因?yàn)闆](méi)有odex的話,系統(tǒng)要從apk包中再提取dex再不運(yùn)行
什么是dex文件?
dex文件是Android系統(tǒng)的可執(zhí)行文件,中有應(yīng)用程序的全部操作指令在內(nèi)運(yùn)行時(shí)數(shù)據(jù)。
導(dǎo)致dalvik是一種針對(duì)嵌入式設(shè)備而特殊能量啊,設(shè)計(jì)的java虛擬機(jī),所以才dex文件與標(biāo)準(zhǔn)的class文件在結(jié)構(gòu)設(shè)計(jì)上有著本質(zhì)的區(qū)別。
當(dāng)java程序程序編譯成class后,還不需要在用dex工具將所有的class文件整合到一個(gè)dex文件,目的是其中各個(gè)類也能共享數(shù)據(jù),在這減低了冗余,同樣也是文件結(jié)構(gòu)極其經(jīng)湊,dex文件是現(xiàn)代jar文件大小的50%左右。
dex將原來(lái)是class每個(gè)文件都是的共三信息合成套裝一體,這樣降低了class的冗余。
為什么小內(nèi)存iPhone比大內(nèi)存Android機(jī)更流暢?
這中間的原因相當(dāng)多,并且iPhone的內(nèi)存都是越來(lái)越強(qiáng)了,從之前的1-2G升到了2-3G,都是漸漸適應(yīng)時(shí)代的發(fā)展是需要,當(dāng)然了Android手機(jī)的步子相當(dāng)大些了,現(xiàn)在基本是3GB平路,統(tǒng)一標(biāo)配4-6GB,高的至少8GB了,盡我所知,總結(jié)如下:
垃圾回收機(jī)制,換句話說(shuō)Android內(nèi)存越大越好Android內(nèi)存管理機(jī)制是適得其所,有多少內(nèi)存就用多少,等他內(nèi)存夠不夠了,變會(huì)先執(zhí)行垃圾回收,這樣的機(jī)制促進(jìn)大內(nèi)存的發(fā)揮,而對(duì)于內(nèi)存有限的手機(jī)就很不大好。問(wèn)題本質(zhì),垃圾回收是三個(gè)普通的東西的過(guò)程,會(huì)使設(shè)備變慢,這又是大家偶爾會(huì)吐糟手機(jī)在用一些時(shí)間變得更加有些卡的比較多原因。
但iPhone沒(méi)有垃圾回收這樣的機(jī)制,它用的是自動(dòng)啟動(dòng)語(yǔ)句數(shù)器,這是Objective-C管理對(duì)象的方法,諸如引用時(shí)計(jì)數(shù)寄存器1,解引時(shí)-1,定時(shí)計(jì)數(shù)為0時(shí)就施放,整體上它對(duì)內(nèi)存的利用率要高得多,絕對(duì)不會(huì)有事沒(méi)事都丟在后臺(tái),在內(nèi)存上占用要少得多,當(dāng)然了,也每天都有人吐槽iOS這種“偽后臺(tái)”。
雖說(shuō)內(nèi)存越大越好,但對(duì)大多數(shù)人來(lái)說(shuō),4gb內(nèi)存的Android手機(jī)早就能滿足的條件絕大多數(shù)人的需求了,并不是像8GB對(duì)iPhone的3GB這樣過(guò)分。
用戶界面的優(yōu)先級(jí),才是iPhone流暢的主要原因iOS優(yōu)勢(shì)之一那是不能操作下來(lái)流暢十足,這個(gè)主要注意原因是iOSUI軟件渲染發(fā)生在具有動(dòng)態(tài)實(shí)時(shí)優(yōu)先級(jí)的不能線程中,但是在Android上,UI3d渲染僅僅突然發(fā)生在普通優(yōu)先級(jí)的主線程中,這譏諷之意著Android中的其他應(yīng)用一旦也可以組建處理器資源,并傷害基本上的用戶界面交互,從而造成很明顯的延遲。
應(yīng)用程序管理,開(kāi)放的、自由與混亂Android給了開(kāi)發(fā)人員更多的權(quán)利和自由,導(dǎo)致內(nèi)存泄漏或資源占用后臺(tái)進(jìn)程,確實(shí)現(xiàn)在Android早就做了一些接觸來(lái)控制它,但力度還遠(yuǎn)遠(yuǎn)不夠,更何況在國(guó)內(nèi)還有一個(gè)很多出了問(wèn)題的開(kāi)發(fā)人員肆意在憑借這種自由做著一些其他傷害用戶體驗(yàn)的事。
iOS就差別啊,它對(duì)開(kāi)發(fā)人員做出了很多限制,在這樣一板一眼下,開(kāi)發(fā)人員也做不了什么傷害的事情來(lái),當(dāng)iOS如果說(shuō)某應(yīng)用不是需要運(yùn)行時(shí),iOS會(huì)強(qiáng)制停止任何進(jìn)程。
軟件與硬件的協(xié)作iOS與iPhone是一定高度協(xié)作的,它們也是蘋(píng)果公司設(shè)計(jì)和測(cè)試,并由Apple的合作伙伴制造,而Android四海為家,開(kāi)發(fā)人員與硬件制造商分離出來(lái),碎片化已不堪負(fù)重,在軟硬件的銜接過(guò)渡上遠(yuǎn)不妨iPhone了。
恰恰因此這樣種種原因,才照成了題主所問(wèn)的問(wèn)題,不過(guò),Android正準(zhǔn)備努力再努力趕不上,Google也在不停相關(guān)規(guī)范這個(gè)系統(tǒng),兩者之間的差距一直在縮小成,但是,我們也要正視這種差距的存在。