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
目录
相关文章
|
30天前
|
编解码 iOS开发
IOS上架APP Store时预览图尺寸
IOS上架APP Store时预览图尺寸
47 3
|
28天前
|
iOS开发
App备案与iOS云管理式证书 ,公钥及证书SHA-1指纹的获取方法
App备案与iOS云管理式证书 ,公钥及证书SHA-1指纹的获取方法
81 0
App备案与iOS云管理式证书 ,公钥及证书SHA-1指纹的获取方法
|
30天前
|
开发工具 iOS开发
解决Flutter运行报错Could not run build/ios/iphoneos/Runner.app
解决Flutter运行报错Could not run build/ios/iphoneos/Runner.app
77 2
|
11天前
|
Android开发 iOS开发 C#
Xamarin:用C#打造跨平台移动应用的终极利器——从零开始构建你的第一个iOS与Android通用App,体验前所未有的高效与便捷开发之旅
【8月更文挑战第31天】Xamarin 是一个强大的框架,允许开发者使用单一的 C# 代码库构建高性能的原生移动应用,支持 iOS、Android 和 Windows 平台。作为微软的一部分,Xamarin 充分利用了 .NET 框架的强大功能,提供了丰富的 API 和工具集,简化了跨平台移动应用开发。本文通过一个简单的示例应用介绍了如何使用 Xamarin.Forms 快速创建跨平台应用,包括设置开发环境、定义用户界面和实现按钮点击事件处理逻辑。这个示例展示了 Xamarin.Forms 的基本功能,帮助开发者提高开发效率并实现一致的用户体验。
23 0
|
30天前
|
iOS开发
解决IOS上架App Store后显示语言为英文的问题
解决IOS上架App Store后显示语言为英文的问题
35 0
|
4月前
如何解决iOS16系统app首次启动总是弹出允许粘贴提示框问题
如何解决iOS16系统app首次启动总是弹出允许粘贴提示框问题
58 0
如何解决iOS16系统app首次启动总是弹出允许粘贴提示框问题
|
4月前
|
大数据 测试技术 数据库
ios app性能分析
ios app性能分析
38 2
|
4月前
|
移动开发 网络协议 Linux
We discovered one or more bugs in your app when reviewed on iPhone and iPad running iOS 14.1
We discovered one or more bugs in your app when reviewed on iPhone and iPad running iOS 14.1
50 0
|
4月前
|
定位技术 开发工具 iOS开发
ios9定位服务的app进入后台三分钟收不到经纬度,应用被挂起问题及解决方案
ios9定位服务的app进入后台三分钟收不到经纬度,应用被挂起问题及解决方案
43 0
|
4月前
|
iOS开发 网络架构 UED
ios app的分类与本质,感想
ios app的分类与本质,感想
38 0