使用universal framework进行编译。在使用xcode7编译时发现,由于系统生成的目录有变化,导致无法生成原始脚本依赖的相关文件目录结构。
XCode7编译错误总结
- 错误A:用python脚本的universal framework。
/Users/fangying/Documents/project/XXX/DerivedData/XXX/Build/Products/Debug-iphoneos/XXX.framework/Versions/A
错误B:用shell脚本的universal framework。虽然不会编译错误,但是编译输入的framework是错误的。具体请看下图:
错误C:用shell脚本的universal framework。出现下面的错误。
iPhoneOS.platform/Developer/usr/bin/libtool: No such file or directory
iPhone平台Framework简介
xxx.framework包是iPhone平台对于资源、二进制包、头文件集合。通过这个集合包可以方便提供给使用者提供业务bundle或者SDK的功能。
对于系统提供两种framework:
- 静态framework
- 动态framework,比如系统Fundation.framework、AudioToolBox.framework等等。该framework类似与系统动态库。而对于开发者的动态framework,需要把工程设置target to 8.0以上才能支持。
对于framework,iOS系统有严格规定:
# MyFramework.framework
# |-- MyFramework -> Versions/Current/MyFramework
# |-- Headers -> Versions/Current/Headers
# |-- Resources -> Versions/Current/Resources
# `-- Versions
# |-- A
# | |-- MyFramework
# | |-- Headers
# | | `-- MyFramework.h
# | `-- Resources
# | |-- Info.plist
# | |-- MyViewController.nib
# | `-- en.lproj
# | `-- InfoPlist.strings
# `-- Current -> A
注意 对于Mac OS每个App都是一个bundle,对于每个bundle都有严格文件目录格式,以及严格文件名要求,这些严格要求就像App加载协议一样,系统通过该基于文件目录格式和文件名,加载、启动App。个人认为这个有利于app管理和动态部署。Mac OS重装系统,不用想Windows重装系统一样,重装系统后,Mac OS之前应用都可以正常使用,Window就完蛋了,需要重新安装,