為什麼 iOS 的客戶端比 Android 和 S60 的包大很多?

多一點功能的都7、8M,有的幾十M,用 Obj-C 不應該編譯完後這麼大。


純代碼部分(bin)是乾貨,撐死了也大不到哪裡去,各種資源(UI圖片等)才是大頭。

在注意到iOS的安裝包大的同時,你也應該注意到iOS app的設計品質(精美度,解析度等等)要遠高於其他系統。


蘋果對UI資源的要求非常多。一個UI可能要提供多個不同解析度的包,甚至有一些提供通用版本的程序更是會大一些。

把下面那個回答怎麼減少安裝包大小的地方列出來。

1,使用代碼編寫UI。可以參考我的代碼。http://github.com/jiansihun/bookcamp 。由於這一部分代碼使用three20 的style編寫。所以ui中的只有過渡效果的都可以這樣實現。簡單的都可以用代碼編寫。如果美工非常bt。使用非常多的複雜圖形。那麼把複雜部分切出。部分效果用代碼編寫。

2,代碼編譯記得勾上壓縮圖片。

3,美工出圖需要結合設備的解析度。

4,下載UI。動態載入UI。


補充一條:因為蘋果強制32位與64位共存,而安卓沒有,所以iOS編譯出的代碼包直接就是乘2的存在,證實這一點只需解壓iOS和android的應用包,看一下.a文件和.so文件的大小就知道了

其他因素就如樓上所說,再次就不重複了


麵館等面中,手機答,有多年UI設計經驗。

包大小主要在圖片資源上是確實的,說說為什麼iOS比機器人(手機切換輸入法不便所以下面我都用中文)的包大。

1.平台特性

水果的屏幕寬頻只有一種,控制項和貼圖基本上是絕對坐標定位的,且無需考慮拉伸,於是大多的切圖都是全像素的,比如tab要640*98那麼就會真的切一個640*98的png圖片出來,而且只需一個便可完美適應所有設備。

而安卓有很多,直接全尺寸不能適用所有屏幕,於是安卓有一個dot9的png規範(不知道這樣稱呼合適不),通過在圖片上做標記來拉伸圖片,拉伸的話,圖片像素數便可以很小,但是像素數不是圖片小的根本原因,因為有圖片壓縮演算法存在,但是拉伸這個特性要求圖片不能有過多的紋理/漸變,少了這些東西,素材的尺寸就變得非常小了。

拉伸以適應更多的屏幕解析度,這也是機器人和窗口推扁平的一個重要原因,扁平易拉伸。

2.矯飾

拉伸讓安卓必須放棄一些素材細節,但是水果沒這個顧忌,於是水果的UI大家都看到了,水果這種UI的難度確實比較高,也討喜,於是也把UI設計的地位提升了不少。也把素材的尺寸提升了很多。

去吃面,吃完編輯。

感謝我煮賜我答題的心情,RAmen。

吃完了,主要想反對下林先生的答案,水果是有兩套dpi,但是一直以來都不強求圖片去適配低解析度,只要能適應高分屏就能在低分上跑,ios7出來以後更加不需要這個。

但是如果你有潔癖有精力一定要搞兩套,也不要說這是比安卓大的原因,因為安卓有三套。

最重要的原因之一就是矯飾。

消食去。


推薦閱讀:

iphone怎麼不設返回鍵?
WP8、iOS有沒有許可權機制?
為什麼知乎 iPhone 應用不支持 iOS 4.2 ?
零基礎自學iOS應用開發可行嗎?多久才可以?
Android 開發和 iOS 開發哪個更有前途呢?

TAG:iPhone應用 | iOS開發 | Objective-C |