伪装所需要的操作
Static Framework 需要伪装成Bundle主要是为了避免以下问题
- Static Framework内的Mach-O无用
- Static Framework Debug时会报错
- Static Framework 简单删除Mach-O会引起无法Archive 和 安装等问题
所需要
操作 | 作用 |
---|---|
删除Static Framework Mach-O | 因为Static Mach-O会进入动态库和App,原本Framework的.o的压缩包变得无用 |
取消代码签名 | Bundle本身是不需要签名的 |
修改Plist | 将Framework变身成Bundle |
移除Frameworks目录 | 如果不移除Frameworks目录,会无法Install在设备上,签名验证失败 |
在完成伪装后需要通过 [NSBundle bundleWithURL:] 来进行加载,不能使用[self class]加载
Shell脚本主要指令
命令行 | 作用 | 执行 |
---|---|---|
defaults | 读写Plist文件,将Framework改Bundle | defaults write “$FRAMEWORK/Info.plist” CFBundlePackageType “BNDL” defaults delete “$FRAMEWORK/Info.plist” CFBundleExecutable |
otool | 查看Mach-O,判断是否为Static | otool -a “$FRAMEWORK_EXECUTABLE_PATH |
head | 选取第一行 | head -n 1 |
其余的命令可以去参考文章模块化中的Shell
Example Shell
以下是个完整版的包含了
- Static Framework 改 Bundle
- 删除无用的Framework 架构的脚本
1 | APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}" |