美文网首页
framework--结构篇

framework--结构篇

作者: 慧惠 | 来源:发表于2016-01-12 09:34 被阅读940次

    续上一篇 Framework--怎么使用Framework
    下一篇 framework--多架构(Multi-Architecture)编译

    1、framework的特点

    1.1、目录结构
    Framework有一个能被Xcode识别的特殊的目录结构。可以通过build task,来创建这种结构。
    1.2、片段(Slice)
    目前为止,当你构建库时,仅仅考虑到当前需要的结构(architecture体系结构)。例如,i386、arm7等,为了让一个framework更有用,对于每一个运行framework都需要构建这种结构。下面你就会创建一个新的工程,构建所有需要的结构,并将它们包含到framework中。

    2、framework的结构

    正如之前提到的,一个framework有一个特殊的目录结构,看起来像是这样的:


    3、创建framework的结构

    1)这一步在build phases部分添加了一个新的面板,这允许你在构建时运行一个Bash脚本。你希望让脚本在build的过程中何时执行,就把这个面板拖动到列表中相对应的那一位置。对于该framework工程来说,脚本最后执行,因此你可以让它保留在默认的位置即可。

    在项目导航栏中选择A,然后选择A静态库目标,选择Build Phases栏,然后选择Editor/Add Build Phase/Add Run Script Build Phase来添加一个新的脚本。

    2)将Run Script重命名为Build Framework

    3)在上图的M区域粘贴下面的Bash脚本代码

    set -e
      
    export FRAMEWORK_LOCN="${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.framework"
      
    # Create the path to the real Headers die
    mkdir -p "${FRAMEWORK_LOCN}/Versions/A/Headers"
      
    # Create the required symlinks
    /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}"
      
    # Copy the public headers into the framework
    /bin/cp -a "${TARGET_BUILD_DIR}/${PUBLIC_HEADERS_FOLDER_PATH}/" \
               "${FRAMEWORK_LOCN}/Versions/A/Headers"
    

    4)注意
    这个脚本首先创建了A.framework/Versions/A/Headers目录,然后创建了一个framework所需要的三个连接符号(symbolic links)。
    a、Versions/Current => A

    b、Headers => Versions/Current/Headers

    c、A => Versions/Current/A

    5)将公共头文件从你之前定义的公共头文件路径拷贝到Versions/A/Headers目录下,-a参数确保修饰次数作为拷贝的一部分不会改变,防止不必要的重新编译.

    6)选择A静态库scheme,然后选择iOS Device构建目标,然后使用cmd+B构建。


    7)在A工程里Products目录下右键单击libA.a静态库,然后再一次选择Show in Finder。


    Framework结构目录图

    相关文章

      网友评论

          本文标题:framework--结构篇

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