iOS_SDK开发之.a包打包

171 阅读2分钟

前言:在SDK开发一时,已经创建好了WorkSpace工作区,现在在工作区创建.a包的开发工程。 代码传送门

1.创建生成.a工程

  • 1.1 新建一个Project

    选择Static Library,选择第一步创建的WorkSpace(和SDK开发一中的图1的选择一样),这样就创建好了. framework工程

    成功之后的示例

  • 1.2 添加SDK文件

    添加新文件,将需要暴露的文件进行设置

    选择工程-->>选择TARGETS下的SDK工程-->>Build Phases-->>Copy Files

  • 1.3 新建Aggregate

    创建Aggregate

  • 1.4 添加脚本到 Run Script 自动合成 .framework

    选中创建的Aggregate,-->> Build Phases-->> 点击左上角的加号-->> 选择New Run Script Phases-->> 生成Run Script

    把以下脚本代码复制到 Run Script

    if [ "${ACTION}" = "build" ]
    then
    
    #要build的target名
    target_Name=${PROJECT_NAME}
    echo "target_Name=${target_Name}"
    
    #build之后的文件夹路径
    build_DIR=${SRCROOT}/build
    echo "build_DIR=${build_DIR}"
    
    #真机build生成的头文件的文件夹路径
    DEVICE_DIR_INCLUDE=${build_DIR}/Release-iphoneos/include/${PROJECT_NAME}
    echo "DEVICE_DIR_INCLUDE=${DEVICE_DIR_INCLUDE}"
    
    #真机build生成的.a文件路径
    DEVICE_DIR_A=${build_DIR}/Release-iphoneos/lib${PROJECT_NAME}.a
    echo "DEVICE_DIR_A=${DEVICE_DIR_A}"
    
    #模拟器build生成的.a文件路径
    SIMULATOR_DIR_A=${build_DIR}/Release-iphonesimulator/lib${PROJECT_NAME}.a
    echo "SIMULATOR_DIR_A=${SIMULATOR_DIR_A}"
    
    #目标文件夹路径
    INSTALL_DIR=${SRCROOT}/Products/${PROJECT_NAME}
    echo "INSTALL_DIR=${INSTALL_DIR}"
    
    #目标头文件文件夹路径
    INSTALL_DIR_Headers=${SRCROOT}/Products/${PROJECT_NAME}/Headers
    echo "INSTALL_DIR_Headers=${INSTALL_DIR_Headers}"
    
    #目标.a路径
    INSTALL_DIR_A=${SRCROOT}/Products/${PROJECT_NAME}/lib${PROJECT_NAME}.a
    echo "INSTALL_DIR_A=${INSTALL_DIR_A}"
    
    #判断build文件夹是否存在,存在则删除
    if [ -d "${build_DIR}" ]
    then
    rm -rf "${build_DIR}"
    fi
    
    #判断目标文件夹是否存在,存在则删除该文件夹
    if [ -d "${INSTALL_DIR}" ]
    then
    rm -rf "${INSTALL_DIR}"
    fi
    #创建目标文件夹
    mkdir -p "${INSTALL_DIR}"
    
    #build之前clean一下
    xcodebuild -target ${target_Name} clean
    
    #模拟器build
    xcodebuild -target ${target_Name} -configuration Release -sdk iphonesimulator
    
    #真机build
    xcodebuild -target ${target_Name} -configuration Release -sdk iphoneos
    
    #复制头文件到目标文件夹
    cp -R "${DEVICE_DIR_INCLUDE}" "${INSTALL_DIR_Headers}"
    
    #合成模拟器和真机.a包
    lipo -create "${DEVICE_DIR_A}" "${SIMULATOR_DIR_A}" -output "${INSTALL_DIR_A}"
    
    #打开目标文件夹
    open "${INSTALL_DIR}"
    
    fi
    
    

    SDK脚本嵌入

  • 1.5 编译获取.a

    command+B直接编译,产生.a。

    生成framework包

2.将产生的SDK和SDK的集成Demo进行关联

  • 将编译产生的.b包所在目录,导入到Demo

  • 使用SDK,运行Demo

  • 运行结果如下

    运行结果首页

    点击按钮跳转到.a内的页面

最后的最后,把这个工程上传到Git就可以愉快的开发了。。。以上是我个人的理解,如有错误,请各位大牛批评指正,文中.a的打包方法参考网上资料 参考链接