《iOS创建Framework》Xcode 10超详细图文教程,创建一个库文件

参考文章:
http://www.cocoachina.com/ios/20150127/11022.html

已修复Xcode 10脚本执行错误的bug,重新复制第11步脚本,替换原来的代码即可,脚本运行时需选择真机,如下图:


《iOS创建Framework》Xcode 10超详细图文教程,创建一个库文件_第1张图片
真机运行脚本

1、新建Cocoa Touch Static Library工程

《iOS创建Framework》Xcode 10超详细图文教程,创建一个库文件_第2张图片
新建工程.png

2、删除.m,然后把.h替换为:#import

《iOS创建Framework》Xcode 10超详细图文教程,创建一个库文件_第3张图片
修改内容.png

3、BuildPhases -> Link Binary with Libraries -> 点击+ -> UIKit.framework -> add

《iOS创建Framework》Xcode 10超详细图文教程,创建一个库文件_第4张图片
添加库文件.png

4、Build Phases -> Editor -> Add Build Phase\Add Headers Build Phase

《iOS创建Framework》Xcode 10超详细图文教程,创建一个库文件_第5张图片
Add Headers Build Phase.png

5、把.h拖到Headers下的Public部分

《iOS创建Framework》Xcode 10超详细图文教程,创建一个库文件_第6张图片
拖动.h.png

6、将需要打包的文件入工程

《iOS创建Framework》Xcode 10超详细图文教程,创建一个库文件_第7张图片
拖入文件.png

7、配置Build Settings

1)Dead Code Stripping设置为NO

《iOS创建Framework》Xcode 10超详细图文教程,创建一个库文件_第8张图片
配置Build Settings.png

2)Mach-O Type选择static或者dynamic都行
3)Architectures下增加armv7s,并选中。将Build Active Architecture Only 设置为NO

《iOS创建Framework》Xcode 10超详细图文教程,创建一个库文件_第9张图片
增加armv7s.png

8、添加脚本并编译:Build Framework

《iOS创建Framework》Xcode 10超详细图文教程,创建一个库文件_第10张图片
创建运行脚本.png

set -e export FRAMEWORK_LOCN="${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.framework" mkdir -p "${FRAMEWORK_LOCN}/Versions/A/Headers" /bin/ln -sfh A "${FRAMEWORK_LOCN}/Versions/Current" /bin/ln -sfh Versions/Current/Headers "${FRAMEWORK_LOCN}/Headers" /bin/ln -sfh "Versions/Current/${PRODUCT_NAME}" \ "${FRAMEWORK_LOCN}/${PRODUCT_NAME}" /bin/cp -a "${TARGET_BUILD_DIR}/${PUBLIC_HEADERS_FOLDER_PATH}/" \ "${FRAMEWORK_LOCN}/Versions/A/Headers"

9、editor -> add target -> Cross-platform -> Aggregate -> 执行第7步操作

《iOS创建Framework》Xcode 10超详细图文教程,创建一个库文件_第11张图片
add target_0.png
《iOS创建Framework》Xcode 10超详细图文教程,创建一个库文件_第12张图片
add target_1.png

10、Build Phases -> Target Dependencies -> 添加刚创建的.a

《iOS创建Framework》Xcode 10超详细图文教程,创建一个库文件_第13张图片
添加.a.png

11、添加脚本并编译:MultiPlatform Build

set -e if [ -n "$RW_MULTIPLATFORM_BUILD_IN_PROGRESS" ]; then exit 0 fi export RW_MULTIPLATFORM_BUILD_IN_PROGRESS=1 RW_FRAMEWORK_NAME=${PROJECT_NAME} RW_INPUT_STATIC_LIB="lib${PROJECT_NAME}.a" RW_FRAMEWORK_LOCATION="${BUILT_PRODUCTS_DIR}/${RW_FRAMEWORK_NAME}.framework" function build_static_library { xcrun xcodebuild -project "${PROJECT_FILE_PATH}" \ -target "${TARGET_NAME}" \ -configuration "${CONFIGURATION}" \ -sdk "${1}" \ ONLY_ACTIVE_ARCH=NO \ BUILD_DIR="${BUILD_DIR}" \ OBJROOT="${OBJROOT}/DependentBuilds" \ BUILD_ROOT="${BUILD_ROOT}" \ SYMROOT="${SYMROOT}" $ACTION } function make_fat_library { xcrun lipo -create "${1}" "${2}" -output "${3}" } if [[ "$SDK_NAME" =~ ([A-Za-z]+) ]]; then RW_SDK_PLATFORM=${BASH_REMATCH[1]} else echo "Could not find platform name from SDK_NAME: $SDK_NAME" exit 1 fi if [[ "$SDK_NAME" =~ ([0-9]+.*$) ]]; then RW_SDK_VERSION=${BASH_REMATCH[1]} else echo "Could not find sdk version from SDK_NAME: $SDK_NAME" exit 1 fi if [ "$RW_SDK_PLATFORM" == "iphoneos" ]; then RW_OTHER_PLATFORM=iphonesimulator else RW_OTHER_PLATFORM=iphoneos fi if [[ "$BUILT_PRODUCTS_DIR" =~ (.*)$RW_SDK_PLATFORM$ ]]; then RW_OTHER_BUILT_PRODUCTS_DIR="${BASH_REMATCH[1]}${RW_OTHER_PLATFORM}" else echo "Could not find other platform build directory." exit 1 fi build_static_library "${RW_OTHER_PLATFORM}${RW_SDK_VERSION}" if [ "$RW_SDK_PLATFORM" == "iphonesimulator" ]; then build_static_library "${SDK_NAME}" fi make_fat_library "${BUILT_PRODUCTS_DIR}/${RW_INPUT_STATIC_LIB}" \ "${RW_OTHER_BUILT_PRODUCTS_DIR}/${RW_INPUT_STATIC_LIB}" \ "${RW_FRAMEWORK_LOCATION}/Versions/A/${RW_FRAMEWORK_NAME}" cp -a "${RW_FRAMEWORK_LOCATION}/Versions/A/${RW_FRAMEWORK_NAME}" \ "${RW_OTHER_BUILT_PRODUCTS_DIR}/${RW_FRAMEWORK_NAME}.framework/Versions/A/${RW_FRAMEWORK_NAME}" INSTALL_DIR=${SRCROOT}/Products/${RW_FRAMEWORK_NAME}.framework if [ -d "${INSTALL_DIR}" ]; then rm -rf "${INSTALL_DIR}" fi ditto "${RW_FRAMEWORK_LOCATION}" "${INSTALL_DIR}" open "${INSTALL_DIR}"

《iOS创建Framework》Xcode 10超详细图文教程,创建一个库文件_第14张图片
编译.png

12、验证

cd framework文件夹下
xcrun lipo -info 工程名称

《iOS创建Framework》Xcode 10超详细图文教程,创建一个库文件_第15张图片
验证.png

你可能感兴趣的:(《iOS创建Framework》Xcode 10超详细图文教程,创建一个库文件)