bitcode 设置

Sat 12 May 2018 by Little Captain

打包相关设置

  • Build Settings -> Enable Bitcode 设置为 Yes
  • Build Settings -> Other C Flags 中添加 -fembed-bitcode
  • 这个设置不止要在app中设置,同样你也必须在编译库的时候使用。而且需要注意的是该参数, Xcode只在archive模式下添加
  • xcodebuild archive 命令
  • xcodebuild build 命令. 但是要加入一些特殊编译参数
xcodebuild BITCODE_GENERATION_MODE=bitcode OTHER_CFLAGS="-fembed-bitcode" -configuration "Release" -target "${TARGET_NAME}" -sdk iphoneos clean build
xcodebuild BITCODE_GENERATION_MODE=bitcode OTHER_CFLAGS="-fembed-bitcode" -configuration "Release" -arch "x86_64" -target "${TARGET_NAME}" -sdk iphonesimulator clean build

检测是否打开Bitcode

  • 检查 bitcode 段
  • .a (otool -arch armv7 -l xxxx.a | grep __bitcode | wc -l). 如果当前库支持.a文件则会输出一个数字
  • app, framework (otool -l xxxx | grep __LLVM | wc -l). 当你的framework使用过lipo命令,进行拆解和合并之后,需要指定指令集进行检查才可以 (otool -arch armv7 -l xxxx | grep __LLVM | wc -l)
  • 这些方法只供参考, 以最终检查结果为准

最终检查

  • 如果您是一个APP,可以直接进行Archive打包,如果是一个库,则建议建一个Demo工程进行打包,记得要打开bitcode设置。
  • 检查点1: 连接是否报错. 如果有任何一个库没有打开bitcode链接,将会出现类似下方的错误。只要链接过了,那么基本上OK了。

  • 检查点2: 使用开发模式到处ipa.

选择出包方式(第二种)

Compiling Bitcode

最终输出 ipa 包

To Do

  • 下一步要做什么: 深入研究 App 的大小的优化. 主要从以下两方面考虑
    • 资源文件
    • 二进制文件

What is app thinning? (iOS, tvOS, watchOS)

Sat 12 May 2018 by Little Captain

本文章是总结自 Xcode 帮助文档

概述

  • App Store 和操作系统优化 iOS, tvOS, watchOS 下的应用程序安装包.
  • 这种优化能让你的 App 使用几乎所有设备的特性, 并占用最小的磁盘空间.
  • 优化主要有三方面: Slicing(iOS, tvOS), Bitcode, On-Demand Resources (iOS, tvOS)

Slicing(iOS, tvOS) 二进制切片

  • Apple 的设备CPU架构不知一种, 一般有armv7、armv7s、arm64.
  • 上传至 App Store 的安装包包含armv7(兼容armv7s)和arm64两种架构. 这种安装包就是通用的安装包
  • Apple 会根据, 设备的具体 CPU 架构切片生成对应的安装包
  • 通过这样的操作安装包会变为通用包的一般大小
  • 注意: 切片操作从 9.0 …
read more

Xcode 常见设置集锦

Wed 24 May 2017 by Little Captain

消除 Xcode 警告

read more