說明 | 時間 |
---|---|
首次發(fā)布 | 2017年04月25日 |
最近更新 | 2017年04月25日 |
在iOS和Android完成開發(fā)顷链,發(fā)布App之后目代,有領導就提出了iOS的包比Android大很多的問題。
安裝文件分析
我們都知道蕴潦,在Android中的安裝文件類型為apk像啼,iOS為ipa俘闯,其實簡單來講潭苞,這兩個安裝文件都是個壓縮包。以微信APP的apk(版本為6.5.10)為例真朗,原文件大小在Windows上(NTFS文件系統(tǒng))顯示為44.1MB此疹,經(jīng)過WinRAR解壓縮后占用空間為93.7MB。 而微信APP的ipa(版本為6.5.11)原文件大小為145MB遮婶,解壓縮后占用186MB蝗碎。
咋一看,ipa無論解壓縮都確實要比apk大上不少旗扑,那來看看兩個系統(tǒng)的安裝文件里面包含了什么蹦骑。
Android:一個apk文件解壓縮后,主要有assets臀防、lib眠菇、META-INF、r袱衷、AndroidManifest.xml捎废、classes.dex、resources.arsc這幾個文件和文件夾致燥。
這里只說一下這些文件中占容量最大的一般是assets目錄登疗、lib目錄、res目錄和classes.dex文件嫌蚤。
- assets目錄存放靜態(tài)文件辐益,app需要用到一些音效、字體脱吱、表情包等都在此荷腊。
- lib目錄為依賴庫文件,現(xiàn)在的apk大多都是包含armeabi的lib庫急凰,如果apk兼容x86女仰,還會有x86的依賴庫猜年,這樣這個目錄就會更大一點了。
- r即res疾忍、resource目錄乔外,主要存放資源文件,如圖片一罩、影像文件杨幼。
- classes.dex文件則是Android中Dalvik虛擬機的可執(zhí)行文件,由JAVA下的class文件編譯而來聂渊。
iOS的ipa安裝包則相對簡單一些差购,主要文件夾為Payload,在Windows上會顯示里面有一個APP名字命名的文件夾汉嗽,如微信為WeChat.app欲逃,包括了APP所有需要的執(zhí)行和資源文件。
對比兩個安裝文件饼暑,微信APP的主執(zhí)行文件為WeChat稳析,文件大小為132MB,其它文件其實只有54MB弓叛。Android的主執(zhí)行文件包括classes.dex文件和lib目錄彰居,微信APP里面這些文件大小為52.6MB,而其它文件為41.7MB撰筷。
由此可見陈惰,兩個系統(tǒng)的同樣一個APP,安裝包里面除開主要的執(zhí)行文件毕籽,其它資源文件占用空間大小相差不多抬闯,并非是文章開頭所說的不同蘋果設備需要不同的套圖,導致安裝文件巨大影钉。但僅從安裝文件來看画髓,iOS的APP確實要比Android版的大好幾倍,那下面還要講到兩個系統(tǒng)的APP安裝機制平委。
APP安裝機制
以前Android主要采用Dalvik虛擬機奈虾,執(zhí)行apk中的classes.dex文件,但后來為了提高APP啟動和運行速度廉赔,從4.4.4版本開始肉微,Android換用了ART虛擬機,apk安裝到系統(tǒng)的過程中會進行預編譯蜡塌,把apk中的dex文件編譯成oat文件碉纳,把字節(jié)碼經(jīng)過JIT即時編譯器轉(zhuǎn)換為機器識別碼,所以apk安裝包中有關程序部分的文件更像是一堆代碼馏艾,占用空間較小劳曹。
iOS則不一樣奴愉,由于iOS最早是基于mac電腦上的OS X同源開發(fā),所以在APP的安裝方式上也相似铁孵,簡單來說iOS的APP本身就是一個大文件夾锭硼,類似Windows上解壓即用的綠色軟件,當你從App Store中下載安裝到iPhone上蜕劝,更像是一個復制文件的過程檀头。
Android的安裝機制,使得APP安裝文件的大小岖沛,不代表安裝到手機上之后的大小暑始,而在iOS上則是安裝文件有多大,安裝完后基本上也是多大婴削。那么實際情況如何呢廊镜?
實測APP安裝后占用空間
Android安裝測試:
這里在基于Android 7.1.2的Lineage 14.1和iOS 10.3.2系統(tǒng)上,對比微信和網(wǎng)易云音樂兩個APP在應用商店上文件大小和安裝后文件大小馆蠕。
在應用商店上期升,微信APP的標注大小僅為44.1MB惊奇,但事實上APP安裝完成后互躬,查看大小卻增大到104MB。網(wǎng)易云音樂APP標注大小為29.8MB颂郎,安裝后為54.33MB吼渡。
iOS安裝測試:
App Store上微信APP的標注大小為123MB,下載安裝完后為121.3MB乓序,應用大小卻變小了寺酪,網(wǎng)易云音樂APP同樣更是標注103MB,安裝完成后為89.8MB替劈,這是由于測試使用的是iPhone SE寄雀,App Store上標注的大小應該是以iPhone 7 Plus作標準的。這也說明在App下載安裝過程中陨献,App Store會根據(jù)設備型號來適配必要的文件盒犹。
結論:
- App Store上標注的APP大小是安裝之后的大小,Android應用商店大多只是顯示安裝文件的大小
- Android安裝APP后眨业,占用空間其實和iOS版相差不大
可以明顯看到急膀,Android在安裝APP后大小出現(xiàn)翻倍的情況,因為前面提到龄捡,現(xiàn)在Android系統(tǒng)安裝APP過程中會進行編譯卓嫂,所以裝完后APP真正的占用空間大小就出來了,這也解答為什么在Android上安裝一個才十幾MB的APP聘殖,裝完后存儲空間不見了上百MB的疑問晨雳。
Android應用商店上只是顯示APK安裝文件的大小行瑞,而在App Store上顯示的APP大小是安裝到手機后的占用空間大小。這樣的好處是餐禁,用戶們會很直觀地知道自己手機還夠不夠容量安裝新的APP蘑辑,而不會出現(xiàn)明明手機設置里面顯示還有幾十MB空余存儲,卻連個十幾MB的APP都安裝不進的困惑坠宴。
當然Android更小的安裝文件方便下載到手機上洋魂,從Android 7.1.2已經(jīng)大幅提升安裝APP速度,只是在安裝之前喜鼓,大家要注意預留2-3倍于安裝文件的存儲空間副砍。