Xcode 6制作动态及静态Framework

Xcode 6制作动态及静态Framework

iOS

静态库

关键点

  1. 新建Target为Cocoa Touch Framework,deployment target(支持的最低版本的系统)设置成5.1.1。
  2. 制作通用动态库(可同时在真机以及模拟器上使用)
# Sets the target folders and the final framework product.
# 如果工程名称和Framework的Target名称不一样的话,要自定义FMKNAME
# 例如: FMK_NAME = "MyFramework",工程名
FMK_NAME=${PROJECT_NAME}
# Install dir will be the final output to the framework.
# The following line create it in the root folder of the current project.
# 存放的目录,根目录的Products中
INSTALL_DIR=${SRCROOT}/Products/${FMK_NAME}.framework
# Working dir will be deleted after the framework creation.
# 设置生成针对模拟器的类库文件以及针对真机的类库的存放目录
WRK_DIR=build
DEVICE_DIR=${WRK_DIR}/Release-iphoneos/${FMK_NAME}.framework
SIMULATOR_DIR=${WRK_DIR}/Release-iphonesimulator/${FMK_NAME}.framework
# -configuration ${CONFIGURATION}
# Clean and Building both architectures.
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphoneos clean build
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphonesimulator clean build
# Cleaning the oldest.移除旧的类库文件,fi是if的结束标记
if [ -d "${INSTALL_DIR}" ]
then
rm -rf "${INSTALL_DIR}"
fi
mkdir -p "${INSTALL_DIR}"
# 这句用来作什么?合并的只是BmobSDK文件,其余文件需要先复制过去,其余文件真机和虚拟机都是一样的
cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"
# Uses the Lipo Tool to merge both binary files (i386 + armv6/armv7) into one Universal final product.
lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/${FMK_NAME}"
rm -r "${WRK_DIR}"
open "${INSTALL_DIR}"

  1. 设置为静态库

  2. 添加构架支持5c,,把armv7s添加到Architectures

  3. 判断一个Framework支持哪些架构,使用lipo -inof frameworkPath命令
  4. Dead Code Stripping设置为NO

    Strip Debug Symbol During Copy 全部设置为NO

    Strip Style设置为Non-Global Symbols

    Generate Debug symbols 设置为NO

    lipo -info ./MyFramework.framework/MyFramework

  5. target的设置是针对每一个target的,而Project的设置是针对所有target的。
  6. 使用pch文件前需要先导入

  1. 导入需要编译的文件,并且使用忽略部分文件没有使用arc

  1. 设置需要公开的头文件

常见问题

1.如果出现 iOS missing submodule 字眼的警告,可以尝试将开放头文件放置在与项目同名的头文件中。

参考

原文链接

详细参考

时间: 2024-10-17 13:44:39

Xcode 6制作动态及静态Framework的相关文章

Xcode 7制作动态及静态Framework

原文 有没有写SDK或者要将一些常用的工具类做成Framework的经历? 你或许自己写脚本完成了这项工作,相信也有很多的人使用 iOS-Universal-Framework ,随着Xcode 6的发布,相信小伙伴们已经都知道了,Xcode 6支持做Framework了. 同时iOS-Universal-Framework开发者也宣布不在继续维持此项目的开发,建议开发者使用Xcode 6制作,目前网上也有很多制作iOS Framework的资料,但大多都不够详细,接下来本文会详情介绍一下在Xc

【转】Xcode 6制作动态及静态Framework

http://years.im/Home/Article/detail/id/52.html 创建iOS动态库 新建工程并选择默认Target为Cocoa Touch Framework, 如图: 做编码工作,在这里我简单的写了一个Utils的类,并写了一个log方法 设置开放的头文件:Framework中有些类可能是一些私有的辅助工具,不需要使用者看到,在这里只需要把开放出去的类放到Public下, 如图 这样生成的Framework的Headers目录下也只能看到Public的头文件 编码完

Xcode制作动态及静态Framework

有没有写SDK或者要将一些常用的工具类做成Framework的经历? 你或许自己写脚本完成了这项工作,相信也有很多的人使用 iOS-Universal-Framework ,随着Xcode 6的发布,相信小伙伴们已经都知道了,Xcode 6支持做Framework了. 同时iOS-Universal-Framework开发者也宣布不在继续维持此项目的开发,建议开发者使用Xcode 6制作,目前网上也有很多制作iOS Framework的资料,但大多都不够详细,接下来本文会详情介绍一下在Xcode

Xcode 6制作动态及静态通用Framework(解决不支持 armv7s arm64 armv7)

有没有写SDK或者要将一些常用的工具类做成Framework的经历? 你或许自己写脚本完成了这项工作,相信也有很多的人使用 iOS-Universal-Framework ,随着Xcode 6的发布,相信小伙伴们已经都知道了,Xcode 6支持做Framework了. 同时iOS-Universal-Framework开发者也宣布不在继续维持此项目的开发,建议开发者使用Xcode 6制作,目前网上也有很多制作iOS Framework的资料,但大多都不够详细,接下来本文会详情介绍一下在Xcode

xCode6制作动态及静态Framework(转)

原文:http://years.im/Home/Article/detail/id/52.html 相关推荐:http://www.cocoachina.com/ios/20150127/11022.html 关于静态库和动态库的概念,网上资料很多,这里不做叙述,只讲解制作过程. 创建iOS动态库 新建工程并选择默认Target为Cocoa Touch Framework, 如图: 做编码工作,在这里我简单的写了一个Utils的类,并写了一个log方法 设置开放的头文件:Framework中有些

xCode6制作动态及静态Framework

有没有写SDK或者要将一些常用的工具类做成Framework的经历? 你或许自己写脚本完成了这项工作,相信也有很多的人使用 iOS-Universal-Framework ,随着xCode6的发布,相信小伙伴们已经都知道了,xCode6支持做Framework了. 同时iOS-Universal-Framework开发者也宣布不在继续维持此项目的开发,建议开发者使用xCode6制作,目前网上也有很多制作iOS Framework的资料,但大多都不够详细,接下来本文会详情介绍一下在xcode6下制

iOS 使用 Xcode8 制作动态库及静态库

在使用第三方 SDK 时,经常遇到他们提供的仅仅只有一个动态或静态库,并不能获取源码.使用动态库 FrameWork 或 静态库 Lib,可以满足不想把核心代码的具体实现向使用者展示,又能避免其他人错改动代码. 一.动态库 FrameWork 的制作: 打开 Xcode,选中 Cocoa Touch FrameWork. 新建一个 PublicModel 文件,简单输出Log 若这个 PublicManager 文件想要对外公开头文件.需要 然后编译,得到动态库 FrameWork 到目前为止,

iOS 静态库,动态库与 Framework

iOS 静态库,动态库与 Framework 静态库与动态库的区别 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别人使用. 什么时候我们会用到库呢?一种情况是某些代码需要给别人使用,但是我们不希望别人看到源码,就需要以库的形式进行封装,只暴露出头文件.另外一种情况是,对于某些不会进行大的改动的代码,我们想减少编译的时间,就可以把它打包成库,因为库是已经编译好的二进制了,编译的时候只需要 Link 一下,不会浪费编译时间. 上面提到库在使用的时候需要

Xcode 动态库及Framework 安装路径设置

使用Xcode开发动态库及Framework时,需要为其设置Install path.在设置Install path时,可能会使用到以下几个路径: 1)绝对路径:               绝对路径,通常用于设置固定目录下的Framework.动态库. 2)@executable_path:执行路径,通常用于设置直接在Application中加载的FrameWork.动态库. 3)@loader_path:        加载路径,通常用于设置需要在插件中加载的FrameWork.动态库. 4