App瘦身

App Store 規(guī)定了安裝包大小超過 150MB 的 App 不能使用 OTA(over-the-air)環(huán)境下載,也就是只能在 WiFi 環(huán)境下下載。所以,150MB 就成了 App 的生死線,一旦超越了這條線就很有可能會失去大量用戶。但是目前我們App企業(yè)端132.9MB,司機端124.3MB。因此減少包瘦身就顯得比較重要。

目前正在開發(fā)的任務(wù)也進(jìn)入提測階段,手頭有了空閑時間,所以就開始研究App的瘦身方案。

官方 App Thinning

App Thinning 是由蘋果公司推出的一項可以改善 App 下載進(jìn)程的新技術(shù),主要是為了解決用戶下載 App 耗費過高流量的問題,同時還可以節(jié)省用戶 iOS 設(shè)備的存儲空間。

現(xiàn)在的 iOS 設(shè)備屏幕尺寸、分辨率越來越多樣化,這樣也就需要更多資源來匹配不同的尺寸和分辨率。 同時,App 也會有 32 位、64 位不同芯片架構(gòu)的優(yōu)化版本。如果這些都在一個包里,那么用戶下載包的大小勢必就會變大。

App Thinning 會專門針對不同的設(shè)備來選擇只適用于當(dāng)前設(shè)備的內(nèi)容以供下載。比如,iPhone 6 只會下載 2x 分辨率的圖片資源,iPhone 6plus 則只會下載 3x 分辨率的圖片資源。

App Thinning 有三種方式,包括:App Slicing、Bitcode、On-Demand Resources。

App Slicing,會在你向 iTunes Connect 上傳 App 后,對 App 做切割,創(chuàng)建不同的變體,這樣就可以適用到不同的設(shè)備。

On-Demand Resources,主要是為游戲多關(guān)卡場景服務(wù)的。它會根據(jù)用戶的關(guān)卡進(jìn)度下載隨后幾個關(guān)卡的資源,并且已經(jīng)過關(guān)的資源也會被刪掉,這樣就可以減少初裝 App 的包大小。

Bitcode ,是針對特定設(shè)備進(jìn)行包大小優(yōu)化,優(yōu)化不明顯。

這里的大部分工作都是由 Xcode 和 App Store 來幫你完成的,你只需要通過 Xcode 添加 xcassets 目錄,然后將圖片添加進(jìn)來即可。我們所做的任務(wù)較少。

圖片資源

圖片資源的優(yōu)化空間,主要體現(xiàn)在刪除無用圖片和圖片資源壓縮這兩方面。而刪除無用圖片,又是其中最容易、最應(yīng)該先做的。

隨著項目的不斷迭代,可能有的功能已經(jīng)廢棄,或者UI改版導(dǎo)致項目中無用的圖片資源不斷增加。刪除圖片資源可以通過LSUnusedResources

使用方式簡單:

1、從gitHub下載該項目,使用Xcode運行此項目

2、點擊?Browse.. 選擇你的項目工程目錄

3、如果項目中有動態(tài)獲取的資源名,比如說icon_1 icon_2,可以勾選Ignore similar name,自行添加

4、點擊click?Search搜索

5、刪除不需要使用的資源,注意留意fullPath,因為有的圖片資源是第三方庫中的,可以自行看情況是否需要刪除

圖片資源壓縮

對于 App 來說,圖片資源總會在安裝包里占個大頭兒。對它們最好的處理,就是在不損失圖片質(zhì)量的前提下盡可能地做壓縮。

1、可以使用將圖片轉(zhuǎn)成 WebP。WebP 是 Google 公司的一個開源項目。

WebP 壓縮率高,而且肉眼看不出差異,同時支持有損和無損兩種壓縮模式。比如,將 Gif 圖轉(zhuǎn)為 Animated WebP ,有損壓縮模式下可減少 64% 大小,無損壓縮模式下可減少 19% 大小。WebP 支持 Alpha 透明和 24-bit 顏色數(shù),不會像 PNG8 那樣因為色彩不夠而出現(xiàn)毛邊。接下來,我們再看看怎么把圖片轉(zhuǎn)成 WebP?

Google 公司在開源 WebP 的同時,還提供了一個圖片壓縮工具 cwebp來將其他圖片轉(zhuǎn)成 WebP。

不過,WebP 在 CPU 消耗和解碼時間上會比 PNG 高兩倍。而且webp作為非官方的圖片格式,實用上不夠方便,而且不兼容App thinning。所以,我們有時候還需要在性能和體積上做取舍。

2、因為我們公司使用的是藍(lán)湖,也可以下載icon時,開啟切圖壓縮,畫質(zhì)基本是不變的。兼容App thinning

3、平時開發(fā)中盡量保持風(fēng)格統(tǒng)一,可以跟UI設(shè)計師溝通一下,同一類型的圖標(biāo)不要每開發(fā)一個功能,就換圖標(biāo)。盡量做到同類型的圖標(biāo)能復(fù)用。如果只是顏色的不同,可以自己設(shè)置圖片的tintColor來改變顏色。多說一句,如果沒有特殊要求,我推薦直接使用蘋果公司提供的。具體來說,在 iOS 系統(tǒng)內(nèi)置的 SF Symbols 為我們提供了 3150 個一致的、可定制的圖標(biāo)。

SF Symbols 有很多優(yōu)點:

它數(shù)量巨大,幾乎覆蓋所有應(yīng)用場景;

整合了 San Francisco 字體系統(tǒng),當(dāng)用戶改變字體大小的時候,這些圖標(biāo)都會自動對齊;

所有圖標(biāo)都支持顏色,我們可以根據(jù)需求搭配不同的顏色;

使用這些圖標(biāo)時也無須安裝,可以減少 App 的體積。

代碼瘦身

刪除無用類,可以使用腳本。將無用類導(dǎo)出,但是在刪除類的時候,盡量自己查下工程代碼排除一下,因為有的類是通過Runtime的方式使用的,這個腳本不能很好的檢測出來。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容