美文网首页
iOS 如何制作、生成、合并.a 和.framework?

iOS 如何制作、生成、合并.a 和.framework?

作者: 上路喽 | 来源:发表于2017-02-19 14:51 被阅读355次

    一、制作

    1. .a工程创建(静态库)

    (1)新建一个工程,选择cocoa touch static library(如图1)

    (2)将iOS deployment target 改成你想支持的最低版本(如图2)

    (3)编写代码

    (4)需要暴露的头文件,都移到build phases->headers->public里(如图3)

    图1 图2 图3

    2. .framework工程创建(静态库和动态库)

    (1)新建一个工程,选择cocoa touch framework(如图4)

    (2)将iOS deployment target 改成你想支持的最低版本(如图2)

    (3)在target->build setting -> mach-O Type 可以选择动态或静态,如下图(如图5)

    (4)编写代码

    (5)需要暴露的头文件,都移到build phases->headers->public里(如图3)

    图4 图5

    二、生成

    1.首先了解什么是i386,x86_64,armv7,armv7s,arm64架构

    iOS处理器分为32位处理器,和64位处理器,

    模拟器32位处理器测试需要i386架构,(iphone5及其以下的模拟器)

    模拟器64位处理器测试需要x86_64架构,(iphone5s及其以上的模拟器)

    真机32位处理器需要armv7,或者armv7s架构,(iphone4真机/armv7,    ipnone5,iphone5c真机/armv7s)

    真机64位处理器需要arm64架构。(iphone5s及其以上的真机)

    2.如何通过终端生成.a和.framework?

    设备选择真机和模拟器各编译一次,即可生成。

    当编译.a和.framework时,工程最好在release模式下。

    当工程在release模式下,会编译支持所有架构的版本;当工程在debug模式下,只编译当前的architecture版本。比如,你现在选择的模拟器是iPhone6,在debug模式下编译的.a和.framewofk只支持x86_64,在release模式编译的.a和.framewofk支持i386和x86_64。

    3.如何合并.a和.framework

    在终端输入lipo -create ~(iphoneos)  ~(iphonesimulator) -output ~

    合成.framework 就是合并Zip.framework里的Zip

    合并得到的 Zip 把Release-iphoneos/Zip.framework/Zip替换掉 然后这个Zip.framework就合并好了

    合并.a 和.framewor类似,在终端把生成的两个.a文件合并即可。

    2.如何通过脚本合并.framework?

    1.在target ->build phases 里添加new run script phase

    2.在run script 里添加以下代码:

    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


    3.工程在release模式下,设备选择真机和模拟器各编译一次,就自动生成合并好的.framework

    有什么问题,欢迎提出!!!!!

    相关文章

      网友评论

          本文标题:iOS 如何制作、生成、合并.a 和.framework?

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