閱讀359 返回首頁    go 阿裏雲 go 技術社區[雲棲]


iOS App 安裝包瘦身指南

以下列出了安裝包瘦身的無腦執行流程,其中“奇技淫巧”部分為選做題

  • 資源優化
    • 刪除無用圖片
    • 刪除重複資源
    • 壓縮圖片資源
      • 使用ImageOptim無損壓縮圖片
      • 使用TinyPNG有損壓縮圖片
        • 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
      • 去掉無用的變量
      • 反正把能去掉的都去掉
    • 奇技淫巧
      • 將業務打包成動態庫
      • 動態化。將一部分Native界麵用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

最後更新:2017-10-25 12:03:45

  上一篇:go  .NET Core采用的全新配置係統[3]: “Options模式”下的配置是如何綁定為Options對象
  下一篇:go  JVM性能監控常用命令-1