ipa和apk簡易瘦身
圖片來之網路
Material Design風格
apk 瘦身
ipa 瘦身
一、起因
新版本釋出後發現安裝包apk和ipa各增加了10M之多。天啊嚕。這是新增加了多少的功能啊。默默的擔負起瘦身的工作。查程式碼提交,查三方庫和二方庫的使用,查圖片,查配置,查打包方式。
大概確認是因為公司的UI風格開始使用Material Design風格,各種圓角,各種陰影,各種懸浮,各種神乎其乎的Style。引入了上百張圖片導致的。
然後開始查詢各種瘦身的簡易方法,處理方便,風險小,收益大。
二、 apk 瘦身
1. abiFilters
在分析apk包後,看到包大小較大的除了class執行檔案外,還有就是各種so庫和圖片了。那麼針對so庫,可以進行一次 放棄 的選擇。
- armeabiv-v7a: 第7代及以上的 ARM 處理器。2011年5月以後的生產的大部分Android裝置都使用它.
- arm64-v8a: 第8代、64位ARM處理器,很少裝置,三星 Galaxy S6是其中之一。
- armeabi: 第5代、第6代的ARM處理器,早期的手機用的比較多。
- x86: 平板、模擬器用得比較多。
- x86_64: 64位的平板。
可以明顯的知道x86和x86_64基本沒人使用,可以放棄了。
那麼Android Studio中配置可以使用:
ndk { abiFilters "armeabi", "armeabi-v7a", "arm64-v8a" }
so庫減少了2部分,包大小直接減少了2/5。 效果顯著。
2. 圖片瘦身
針對為了美觀和效果,而資原始檔較多,並且很多圖片使用圓角,導致不能使用jpeg的樣式,只能使用png。從而很多圖片的大小在幾百K大小。
此時使用神奇 ofollow,noindex">PPDuck 。 妥妥的。
親測,1.1M的圖片,壓縮80%,直接成為300K。 將所有圖片進行一次瘦身,apk包減少好多好多。心情舒暢。
iOS的Assets.xcassets無效,一定要注意。任何壓縮對於Xcode都是無效的。
三、ipa瘦身
1. bitcode
設定 Build Settings -> Enable Bitcode 為 Yes
使用bitcode後,會根據不同裝置打包出不同的指定包。比如iPhone 8 plus,那麼所有的圖片僅僅包含3x圖片,而不需要包含2x圖片。包大小縮小約1/2。 ^ _ ^
不管任何情況,當前的環境條件下一定要支援bitcode。如果第三方庫不支援,將原始碼下載然後再編譯。然後就可以支援bitcode。
2. Valid Architectures
設定 Build Settings -> Valid Architectures 為 arm64 armv7s
先了解下:(網上抄的)
arm64:iPhone6s | iphone6s plus|iPhone6| iPhone6 plus|iPhone5S | iPad Air| iPad mini2(iPad mini with Retina Display) armv7s:iPhone5|iPhone5C|iPad4(iPad with Retina Display) armv7:iPhone4|iPhone4S|iPad|iPad2|iPad3(The New iPad)|iPad mini|iPod Touch 3G|iPod Touch4
這是與Android的abiFilters作用一樣,編譯不同CPU的指令。如果支援的型別少,那麼打出來的包也變小了。
按現在市場上對iPhone4S及以下的裝置佔有率應該是萬分之一了。SO 可以選擇放棄了。當然iPhone5 和 5C的也不是很多,原則也可以放棄了。(看領導的心情吧)
如果刪除armv7,那麼包大小直接減少了三分之一,爽不爽。
提示: 如果你的Deployment Target 已經9.0 或10.0 那麼刪除armv7可以毫無壓力了。
3. 圖片
Android使用的PPDuck神器,在Xcode中無效。所以如果有大圖的話,使用jpeg來實現吧。
圖片不能放到Assets.xcassets中,需要放到工程目錄下,載入圖片使用:
NSString *path = [[NSBundle mainBundle] pathForResource:@"home_carousel" ofType:@"jpeg"]; img1.image = [UIImage imageWithContentsOfFile:path];
當圖片大於400K或者300K,覺得就可以使用此方案。
總結
- abiFilters "armeabi", "armeabi-v7a", "arm64-v8a"
- PPDuck
- bitcode yes
- Valid Architectures arm64 armv7s
- jpeg
輕鬆愉快!!!
// END 學無止境, 嚴格要求自己。 中秋快樂!!!