如何優化 App 的的包大小?
原文:iOS面試題大全
直接上建議:
- 資源優化
- 刪除無用圖片
- 使用 LSUnusedResources 查詢無用圖片。注意
[UIImage imageNamed:[NSString stringWithFormat:"icon_%d.png",index]];
這種使用圖片的方式,可能會被誤刪。
- 使用 LSUnusedResources 查詢無用圖片。注意
- 刪除重複資源
- 壓縮圖片資源
- 使用 ImageOptim 無失真壓縮圖片。
- 使用 TinyPNG 有失真壓縮圖片。使用的時候直接執行
tinypng *.png -k token
指令碼即可。
- 其他技巧(選用)
- 用 LaunchScreen.storyboard 替換啟動圖片。
- 本地大圖片都使用 webp。
- 資源按需載入,非必要資源都等到使用時再從服務端拉取。
- 刪除無用圖片
- 編譯選項優化
- Optimization Level 在 release 狀態設定為 Fastest/Smallest。
- Strip Debug Symbols During Copy 在 release 狀態設定為 YES。
- Strip Linked Product 在 release 狀態設為 YES。
- Make String Read-Only 在 release 狀態設為 YES。
- Dead Code Stripping 在 release 狀態設為 YES。
- Deployment PostProcessing 在 release 狀態設為 YES。
- Symbols hidden by default 在 release 狀態設為 YES。
- 可執行檔案優化
- 使用 LinkMap 分析庫的使用情況
- 三方庫優化
- 刪除不使用的三方庫。
- 功能用的少但是體積大的三方庫可以考慮自己重寫。
- 合併功能重複的三方庫。
- 程式碼分析
- 用 AppCode 進行程式碼掃描。
- 去掉無用的類及檔案。
- 清理 import。
- 去掉空方法。
- 去掉無用的 log。
- 去掉無用的變數。
- 其他技巧(選用)
- 將業務打包成動態庫。如果動態庫的載入時機不控制好,會影響 App 的啟動速度,權衡使用。
- 動態化。將一部分 Native 介面用 RN/Weex 重寫。
- 去除 Swift 程式碼,Swift 的標準庫是打包在安裝包裡的,一般都有 10M+。然後蘋果官方說等到 Swift Runtime 穩定之後會合併到 iOS 系統裡,那時候使用 Swift 就不會顯著增加包大小了。
- 在 target -> Build Settings -> Other Link Flags 裡新增如下指令,會把 TEXT 欄位的部分內容轉移到 RODATA 欄位,避免蘋果對 TEXT 欄位的稽核限制。當然其實跟安裝包瘦身好像沒有什麼關係,所以除非快不行了否則不建議操作。
-Wl,-rename_section,__TEXT,__cstring,__RODATA,__cstring -Wl,-rename_section,__TEXT,__gcc_except_tab,__RODATA,__gcc_except_tab -Wl,-rename_section,__TEXT,__const,__RODATA,__const -Wl,-rename_section,__TEXT,__objc_methname,__RODATA,__objc_methname -Wl,-rename_section,__TEXT,__objc_classname,__RODATA,__objc_classname -Wl,-rename_section,__TEXT,__objc_methtype,__RODATA,__objc_methtype
- 蘋果官方的策略
- App Thinning
- 使用 xcasset 管理圖片。
- 開啟 BitCode
- App Thinning
相關文章
- 如何優化執行在webkit上的web app優化WebKitAPP
- 如何實現 iOS App 的冷啟動優化iOSAPP優化
- iOS App優化1---減少包體積iOSAPP優化
- app 效能優化的那些事APP優化
- app 的記憶體優化APP記憶體優化
- 支付寶 App 構建優化解析:Android 包大小極致壓縮APP優化Android
- 閉包的使用-高頻事件優化事件優化
- app 效能優化的那些事(二)APP優化
- 優化 App 的啟動時間優化APP
- 字首索引,一種優化索引大小的解決方案索引優化
- Yelp app是如何使用Glide優化圖片載入的APPIDE優化
- 優化基於文字的資產的編碼和傳送大小優化
- 如何優雅地提取 App 的素材APP
- Angularjs的$apply及其優化使用AngularJSAPP優化
- 直播APP的效能優化-禮物篇APP優化
- 斜率優化(凸包優化)DP問題acm優化ACM
- Swift 優雅的適配大小Swift
- 5個可以幫你優化App的優秀網站優化APP網站
- lucene索引檔案大小優化小結索引優化
- 10g優化備份集大小優化
- 如何減小微信小程式程式碼包大小微信小程式
- 01揹包優先佇列優化佇列優化
- 減少apk包大小的一種思路APK
- App繪製優化APP優化
- APP優化總結APP優化
- App電量優化APP優化
- App啟動優化APP優化
- [譯]Web 效能優化: 圖片優化讓網站大小減少 62%Web優化網站
- LinkedIn是如何優化Kafka的優化Kafka
- 多重揹包問題的單調佇列優化佇列優化
- 遊戲產品如何做優化(二):用“三玩法”捕獲大小R遊戲優化
- iOS AppIcon、LaunchImage的大小尺寸iOSAPP
- 01揹包空間優化優化
- iOS效能優化 - APP啟動時間優化iOS優化APP
- 實踐App記憶體優化:如何有序地做記憶體分析與優化APP記憶體優化
- 語音社交app開發,如何實現介面優化?APP優化
- Flutter Notes|Flutter-Apk 大小優化探索FlutterAPK優化
- Lucene索引檔案大小優化方案總結索引優化