ios自定义.framework .framework可以制作为静态库和动态库,此文章是制作静态库。系统的.framework都是动态库,自己制作的.framework都是静态库。

如何制作.framework如下:

1.用xcode创建一个framework工程,如下图

2.编写自己的工具类。如下图

3.设置Build Active Architecture Only 值 为NO。如下图(适配所有版本的模拟器和真机)

4.设置Mach-O Type值为Static Library(静态库)。如下图

5.将你需要别人引用的头文件设置public。默认在project(不可见,私有)。

6.引入头文件,有几个public 就引入几个public文件

7.创建Target。File->New->Target->Other->Aggregate。如下图

8.添加脚本。如下图

9.下面的脚本代码复制到新建的 Run Script. 如下图

#!/bin/sh
#要build的target名
TARGET_NAME=${PROJECT_NAME}
if [[ $1 ]]
then
TARGET_NAME=$1
fi
UNIVERSAL_OUTPUT_FOLDER="${SRCROOT}/Products"#创建输出目录,并删除之前的framework文件
mkdir -p "${UNIVERSAL_OUTPUT_FOLDER}"
rm -rf "${UNIVERSAL_OUTPUT_FOLDER}/${TARGET_NAME}.framework"#分别编译模拟器和真机的Framework
xcodebuild -target "${TARGET_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build
xcodebuild -target "${TARGET_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphonesimulator BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build#拷贝framework到univer目录
cp -R "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${TARGET_NAME}.framework" "${UNIVERSAL_OUTPUT_FOLDER}"#合并framework,输出最终的framework到build目录
lipo -create -output "${UNIVERSAL_OUTPUT_FOLDER}/${TARGET_NAME}.framework/${TARGET_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${TARGET_NAME}.framework/${TARGET_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${TARGET_NAME}.framework/${TARGET_NAME}"#删除编译之后生成的无关的配置文件
dir_path="${UNIVERSAL_OUTPUT_FOLDER}/${TARGET_NAME}.framework/"
for file in ls $dir_path
do
if [[ ${file} =~ ".xcconfig" ]]
then
rm -f "${dir_path}/${file}"
fi
done
#判断build文件夹是否存在,存在则删除
if [ -d "${SRCROOT}/build" ]
then
rm -rf "${SRCROOT}/build"
fi
rm -rf "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator" "${BUILD_DIR}/${CONFIGURATION}-iphoneos"
#打开合并后的文件夹
open "${UNIVERSAL_OUTPUT_FOLDER}"

10.切换Scheme,CusFrameWork 设置Excluded Architectures下的 Any ios Simulator SDK 值为 arm64。(模拟器生成的.framework, 不需要arm64架构)。如下图 切记taget不要看错了。

11.Scheme:CusFrameWork, 设置编译模式 release。如下图

12.设置.framework的最低版本,如下图

13.Schem: CusFrameWork. 选择真机,command+b 生成真机.framework。如下图

14. Schem: CusFrameWork. 选择模拟器,command+b 生成真机.framework。如下图

13.切换Schem:Aggregate, 选择 any ios device, command+B 编译运行脚本,脚本会自动打开文件夹 如下图

14.测试引入.framework. 新建一个项目TestCusFrameWork. 将13步骤中的CusFrameWork.framework文件夹 放到此项目中的根目录中。然后引入。如下图

15.在TestCusFrameWork使用自己制作的SDK 并运行,成功打印。如下图

完结 OK

iOS制作framework相关推荐

  1. iOS 制作framework(SDK)的流程

    iOS 制作framework(SDK)的流程 项目需要写SDK,在这里整理一下方法和思路. 第一步:创建framwwork 第二步:随便取个名字:Hello,然后点击Next,指定一个你要存的位置 ...

  2. ios 制作framework

    原文:http://db-in.com/blog/2011/07/universal-framework-iphone-ios-2-0/ 原文废话太多啊,自己总结一下,因为我是在原有的静态库工程基础上 ...

  3. ios开发:Xcode8制作framework及使用

    作者:代培 地址:http://daipei.me/posts/make_framework_by_xcode8/ 转载请注明出处 我的博客搬家了,新博客地址:daipei.me 前言 网上关于Fra ...

  4. iOS最新制作Framework总结

    去年为公司开发了自己的SDK供外部客户使用,一直没来得及写个总结,最近时间稍微宽松点,写两篇文章总结一下iOS中Framework制作的流程.本文不会介绍iOS中静态库.动态库的基础知识,只是图文详解 ...

  5. IOS打包封装Framework-在工程中直接制作framework(三)

    为什么80%的码农都做不了架构师?>>>    如果我们写了一个工程,可以直接在工程中制作 framework. 1.建立工程,工程名 showLog 2.在 showLog 中新建 ...

  6. IOS7 ~ Xcode5 制作 framework

    一.Framework 简介(Introduction to Framework Programming Guide) Mac OS X 扩展了 framework 的功能,让我们能够利用它来共享代码 ...

  7. iOS 打包.framework(包括第三方、图片、xib、plist文件)详细步骤及需要注意的地方...

    https://www.cnblogs.com/yk123/p/9340268.html // 加载自定义名称为Resources.bundle中对应images文件夹中的图片 // 思路:从main ...

  8. XCode 6 制作framework

    在Xcode 6 发布之前 ,想建立一个动态的Framework 需要在很多设置 ,以前需要靠静态库来实现, 或者在github 上下载插件进行开发,但是在Xcode 6 出来之后 ,苹果就已经提供了 ...

  9. 一个静态库框架模板: iOS Universal Framework Mk 7

    项目地址: https://github.com/kstenerud/iOS-Universal-Framework 这是一个Xcode 4使用的项目模板,而不是一个新的开源框架. 这是项目主页,介绍 ...

最新文章

  1. TypeError: can only concatenate str (not “int“) to str
  2. php用命令查mysql_phpMySQL命令大全总结
  3. 只腐蚀毛刺 腐蚀算法_摩托车油箱防腐蚀、油封安装、密封清洗经验分享
  4. 【bzoj1034】[ZJOI2008]泡泡堂BNB 贪心
  5. NHibernate部分错误
  6. android的窗口机制分析------UI管理系统
  7. MySQL高级 - 锁 - InnoDB行锁 - 行锁升级为表锁
  8. Oracle拆分字符串,字符串分割的函数。
  9. 税收征管信息系统_聚焦湖北税收征管信息系统正式切换上线啦! 首日办理业务逾26万件...
  10. 力扣题目——350. 两个数组的交集 II
  11. javascript 轮播图(缓存效果)详细篇
  12. 简单大学生静态HTML网页作品 HTML5+CSS大作业——圣诞节节日(7页) 带轮播特效
  13. Unity 优化Unity切换后台的问题
  14. 爬虫之爬取图片(运用了bs4和正则查取)
  15. Atitit保证架构超前性 前瞻性 目录 第一章 简单抽象原则 道和术的区别 1 第一节 原则 kiss 1 第二节 提升到层次哲学层次 1 第三节 命名也要通用抽象 隐藏细节 1 第二章 通用性原
  16. 【又是一波重点】深度解析服务器科普知识 | CSDN博文精选
  17. Oracle提高命中率及优化
  18. 漫威电影里的这项技术竟然与大数据息息相关!
  19. 常见EDA软件工具有哪些?(附EDA企业名单)
  20. 帆软相同列合并_合并表格工具_合并表格工具的痛点_合并表格工具哪一款比较好用-帆软...

热门文章

  1. 修改时序约束改变slack_改变我们使用Slack的方式解决了我们的透明度和筒仓问题
  2. service mysql k8s_Kubernetes/K8S基础使用方法总结【五】——Service
  3. 使用Java将阿拉伯数字转换为中文数字(适配小数转换)
  4. Vue2.x动态添加路由实现
  5. 【LeetCode】345. Reverse Vowels of a String 解题报告
  6. 支持IPV6的阿里云和CDN
  7. 三极管晶体管-2个NPN三极管组成的恒流电路
  8. sonarQube扫描代码生成pdf
  9. 关于手机联系人的中文字母排序问题
  10. TwinCAT隐藏开机画面