自制framework
综合了王大仙和网络上几个人的方法,成功自制Framework
参考简书:http://www.jianshu.com/p/8fcd89bb7b0b
PS:我们需要将公开的头文件从Project中拖入Public,至于是否需要将私有的头文件拖入Private,我觉得直接放在Project中即可,若是Private中有头文件,打包以后的framework中会多出一个Private的文件夹包含着放入Private的头文件,不过我觉得如果是私有最好还是不要让别人看到。事实上只需要public和project两个文件夹就够了 我不明白为啥需要private,因为private打包出framework后也是公开的,和public是一样的,只是名字不同(个人理解,如有不同,还请赐教)。
王大仙写的很详细 不过多赘述。
另:王大仙总结的修改
Build Setting -> Dead Code Stripping 改为NO
Build Setting -> Mach-O Type改为 Static Library
Build Setting -> Build Active Architecture Only 改为 NO
Build Setting -> Architectures 添加armv7s架构
Build Setting -> Other C flags 添加-fembed-bitcode (使SDK支持bitcode)
Build Phases -> Headers 将公开的头文件从Project中拖入Public
脚本保留一下,以后可能用得到。
注意,要先build 生成一个simulator版和真机版的framework,再运行脚本,不然会报错,找不到文件路径。
所以 实际上我们至少需要build 3次。
if [ "${ACTION}" = "build" ]
then
INSTALL_DIR=${SRCROOT}/Products/${PROJECT_NAME}.framework
DEVICE_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework
SIMULATOR_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework
if [ -d "${INSTALL_DIR}" ]
then
rm -rf "${INSTALL_DIR}"
fi
mkdir -p "${INSTALL_DIR}"
cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"
#ditto "${DEVICE_DIR}/Headers" "${INSTALL_DIR}/Headers"
lipo -create "${DEVICE_DIR}/${PROJECT_NAME}" "${SIMULATOR_DIR}/${PROJECT_NAME}" -output "${INSTALL_DIR}/${PROJECT_NAME}"
#open "${DEVICE_DIR}"
#open "${SRCROOT}/Products"
fi
解决导入时的路径问题:
开发环境:xcode9 Version 9.0 (9A235)
iOS系统:iOS11
不知道为什么,往测试工程中拖入framework的时候,buildPhrase里面的link binary with libraries总是为空,我托的时候还特意选了target。如下图,这个地方必须有你的framework,才可以引入。实在没有,你就手动拖进去。