美文网首页iOS开发精进iOS之开发配置iOS Developer
《iOS创建Framework》超详细图文教程,创建一个库文件

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

作者: 九剑仙 | 来源:发表于2017-09-05 15:21 被阅读98次

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

    该教程存在bug,请跳转至
    《<Xcode8.0/9.0>iOS创建可调试的Framework》

    1、新建Cocoa Touch Static Library工程

    新建工程.png

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

    修改内容.png

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

    添加库文件.png

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

    Add Headers Build Phase.png

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

    拖动.h.png

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

    拖入文件.png

    7、配置Build Settings

    1)Dead Code Stripping设置为NO

    配置Build Settings.png

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

    增加armv7s.png

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

    创建运行脚本.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步操作

    add target_0.png add target_1.png

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

    添加.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}" \ 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}" ditto "${RW_FRAMEWORK_LOCATION}" "${HOME}/Desktop/${RW_FRAMEWORK_NAME}.framework"

    编译.png

    12、验证

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

    验证.png

    相关文章

      网友评论

      本文标题:《iOS创建Framework》超详细图文教程,创建一个库文件

      本文链接:https://www.haomeiwen.com/subject/svwujxtx.html