1.创建iOS静态库 2.添加要暴露的头文件 3.Build Settings -> Dead Code Stripping设置为NO
Strip Debug Symbol During Copy 全部设置为NO Strip Style设置为Non-Global Symbols

4.在静态库里添加脚本

set -e

# If we're already inside this script then dieif [ -n "$RW_MULTIPLATFORM_BUILD_IN_PROGRESS" ]; thenexit 0fiexport 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 {    # Will rebuild the static library as specified    #     build_static_library sdk    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 {    # Will smash 2 static libs together    #     make_fat_library in1 in2 out    xcrun lipo -create "${1}" "${2}" -output "${3}"}# 1 - Extract the platform (iphoneos/iphonesimulator) from the SDK nameif [[ "$SDK_NAME" =~ ([A-Za-z]+) ]]; thenRW_SDK_PLATFORM=${BASH_REMATCH[1]}elseecho "Could not find platform name from SDK_NAME: $SDK_NAME"exit 1fi

# 2 - Extract the version from the SDKif [[ "$SDK_NAME" =~ ([0-9]+.*$) ]]; thenRW_SDK_VERSION=${BASH_REMATCH[1]}elseecho "Could not find sdk version from SDK_NAME: $SDK_NAME"exit 1fi

# 3 - Determine the other platformif [ "$RW_SDK_PLATFORM" == "iphoneos" ]; thenRW_OTHER_PLATFORM=iphonesimulatorelseRW_OTHER_PLATFORM=iphoneosfi

# 4 - Find the build directoryif [[ "$BUILT_PRODUCTS_DIR" =~ (.*)$RW_SDK_PLATFORM$ ]]; thenRW_OTHER_BUILT_PRODUCTS_DIR="${BASH_REMATCH[1]}${RW_OTHER_PLATFORM}"elseecho "Could not find other platform build directory."exit 1fi# Build the other platform.build_static_library "${RW_OTHER_PLATFORM}${RW_SDK_VERSION}"

# If we're currently building for iphonesimulator, then need to rebuild#   to ensure that we get both i386 and x86_64if [ "$RW_SDK_PLATFORM" == "iphonesimulator" ]; thenbuild_static_library "${SDK_NAME}"fi

# Join the 2 static libs into 1 and push into the .frameworkmake_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}"# Ensure that the framework is present in both platform's build directoriescp -a "${RW_FRAMEWORK_LOCATION}/Versions/A/${RW_FRAMEWORK_NAME}" \"${RW_OTHER_BUILT_PRODUCTS_DIR}/${RW_FRAMEWORK_NAME}.framework/Versions/A/${RW_FRAMEWORK_NAME}"

# Copy the framework to the user's desktopditto "${RW_FRAMEWORK_LOCATION}" "${HOME}/Desktop/${RW_FRAMEWORK_NAME}.framework"

复制代码

8.编译 在桌面生成 Framework

静态通用Framework相关推荐

  1. iOS架构-静态库.framework脚本化打包补充(5)

    静态库.framework脚本化打包打包已经在iOS架构-静态库.framework手动打包及脚本化打包(5)中讲过.这里补充是通过Xcode 配置Aggregate自动执行脚本打包Framework ...

  2. iOS架构-静态库.framework(引用第三方SDK、开源库、资源包)(9)

    前面介绍了 静态库.a依赖第三方静态库.a的制作 静态库.framework之依赖第三方库(Cocoapods进行管理) 今天课题: 静态库.framework(引用第三方SDK.framework. ...

  3. iOS架构-静态库.framework之依赖第三方库(7)

    需求分析:     把自己的能力封装成静态库提供给客户使用,但是有些工作市场上已经有很好的公开的代码,或者成本很低的解决方案,我们就可以使用别人公开的.或者低成本采购的技术来为我们服务.制作静态库也是 ...

  4. iOS架构-静态库.framework之资源文件打包bundle(6)

    iOS架构-静态库.framework手动打包及脚本化打包(5)中介绍了.framework的脚本化打包,虽然在iOS架构-静态库.a打包之资源文件打包成bundle(4)中已经演示过,其实是一样的. ...

  5. iOS架构-静态库.framework手动打包及脚本化打包(5)

    引用一张博客的图片来理解下基本知识(http://www.cnblogs.com/oc-bowen/p/7478461.html) 我们可以看出.a的封装和.framework的封装差不多,也有模拟器 ...

  6. 使用静态库.framework注意事项

    1.合并.使其同时支持模拟器和真机. 2..framework 默认为动态库,编译时可将其改为静态库.具体步骤如下: 或者可在编译时,将其改为二进制文件: 转载于:https://www.cnblog ...

  7. ios 静态库合成_iOS : 静态库(.framework)合并

    如果写了一个Framework,根据Build时选择的机器类型,会分为模拟器Framework和真机Framework,两者是不能混用的. 此时可以通过配置一个Run Script,在Script中使 ...

  8. iOS : 静态库(.framework)合并

    如果写了一个Framework,根据Build时选择的机器类型,会分为模拟器Framework和真机Framework,两者是不能混用的. 此时可以通过配置一个Run Script,在Script中使 ...

  9. iOS架构-制作静态库.a和.framework 的相互依赖(10)

    有一句名言:当你知道的东西越多,你才会发现你不懂的东西越多. 现在我有点体会到了,当我去了解静态库,我发现我要学习脚本:当我接触编译C/C++库,我发现我要去了解交叉编译:当我想了解组件化架构,我发现 ...

最新文章

  1. math.hypot java_Java之Math类
  2. python分析基金数据,[Python数据分析]numpy基金会,基础
  3. mysql server uuids_slave have equal MySQL Server UUIDs原因及解决
  4. 数据库六大约束用法:主键(primary key)、外键(foreign key)、非空(not null)、默认(default)、检查(check)、唯一(unique)
  5. HTTP 302报文
  6. Linux计划任务Crontab介绍
  7. Struts1 tag
  8. ai驱动数据安全治理_AI驱动的Web数据收集解决方案的新起点
  9. script filename php,PHP $_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 的区别
  10. 全议程来啦!2021数据技术嘉年华,我们周四线上见!
  11. 并查集基础 模板题 hdu1232 畅通工程
  12. stm32f103c8t6--sd卡的读写flash地址空间的数据读取
  13. 爱普生L4168喷墨打印机打印断线或堵头故障处理
  14. java frame 显示图片_java怎么在JFrame中显示动态图片?
  15. 启动MyEclipse时报错,An error has occurred see the log file 出现此类错误提示
  16. 达人评测 i7 13700h和i7 13620h选哪个 酷睿i713700h和13620h对比
  17. [转载]java实现word转pdf
  18. 手机短信验证码开发流程
  19. 振铃效应(ringing artifacts)
  20. Spring Cloud(十四):微服务灰度发布 --- Discovery

热门文章

  1. 军队文职丨试用期薪资7200起,转正过万!军队编制,六险两金+各项福利!了解一下!
  2. licode安装使用
  3. JavaScript(一)——JS基础
  4. 【机器学习】频率学派和贝叶斯学派
  5. 基于SSM的自习室预订座位占座管理系统-JAVA.VUE【计算机毕设、网页开发、论文、源码、开题报告】
  6. 快速排序 Java实现 (详细解释partition的过程)
  7. 10个WordPress的query_posts语句使用技巧
  8. 毕业生网上报到证报到操作(广东茂名市)
  9. springMVC的controller层显示问好解决方案
  10. 如何写设计文档之画软件图