Xcode使用Cocoa Touch Framework新建Framework
来源:互联网 发布:外观设计用什么软件 编辑:程序博客网 时间:2024/06/14 23:51
网上有很多教程使用Xcode新建Framework的教程,不过使用的是Cocoa Touch Static Library,Xcode 7有一个新的功能,通过Cocoa Touch Framework。能直接生成Framework。
Step 1
打开Xcode,新建工程,选择Cocoa Touch Framework,命名为xibFramework.
step 2
1)在framework中添加类,资源等文件。
如上图所示,在Resource中添加xib,在xibFramework.xvassets添加framework中所需要使用到的图片。
2)在xibFramework.h中导入#import<xibFramework/CustomView.h>
xibFramework是新建framework时,自动生成的,把所有需要公开的类的头文件包含在这个.h文件中,在使用framework时,只需要导入这个.h文件即可
3)选中xibFrmework|Build Phases
Headers中将所有需要公开的头文件拖入Public中
Run Script中添加ios-build-framework-script.sh脚本。
若Build Phases中没有Headers和Run Script,在右上角的+处将他们加入到Bulid Phases中
shell脚本的路径要写对,否则编译的时候会找不到,demo中shell脚本放在xibFramework/xibFramework下
4)ios-build-framework-script.sh脚本解释
set -e
set +u
# Avoid recursively calling this script.
if [[ $SF_MASTER_SCRIPT_RUNNING ]]
then
exit 0
fi
set -u
export SF_MASTER_SCRIPT_RUNNING=1
# Constants
SF_TARGET_NAME=${PROJECT_NAME}
UNIVERSAL_OUTPUTFOLDER=`pwd`/${CONFIGURATION}-universal
# Take build target
if [[ "$SDK_NAME" =~ ([A-Za-z]+) ]]
then
SF_SDK_PLATFORM=${BASH_REMATCH[1]}
else
echo "Could not find platform name from SDK_NAME: $SDK_NAME"
exit 1
fi
if [[ "$SF_SDK_PLATFORM" ="iphoneos" ]]
then
echo "Please choose iPhone simulator as the build target."
exit 1
fi
IPHONE_DEVICE_BUILD_DIR=${BUILD_DIR}/${CONFIGURATION}-iphoneos
# Build the other (non-simulator) platform
xcodebuild -project "${PROJECT_FILE_PATH}" -target"${TARGET_NAME}" -configuration"${CONFIGURATION}" -sdk iphoneos BUILD_DIR="${BUILD_DIR}" OBJROOT="${OBJROOT}" BUILD_ROOT="${BUILD_ROOT}" CONFIGURATION_BUILD_DIR="${IPHONE_DEVICE_BUILD_DIR}/arm64" SYMROOT="${SYMROOT}" ARCHS='arm64' VALID_ARCHS='arm64' $ACTION
xcodebuild -project "${PROJECT_FILE_PATH}" -target"${TARGET_NAME}" -configuration"${CONFIGURATION}" -sdk iphoneos BUILD_DIR="${BUILD_DIR}" OBJROOT="${OBJROOT}" BUILD_ROOT="${BUILD_ROOT}" CONFIGURATION_BUILD_DIR="${IPHONE_DEVICE_BUILD_DIR}/armv7" SYMROOT="${SYMROOT}" ARCHS='armv7 armv7s' VALID_ARCHS='armv7 armv7s' $ACTION
# Copy the framework structure to the universal folder (clean it first)
rm -rf "${UNIVERSAL_OUTPUTFOLDER}"
mkdir -p "${UNIVERSAL_OUTPUTFOLDER}"
cp -R "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework""${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework"
# Smash them together to combine all architectures
lipo -create "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework/${PROJECT_NAME}""${BUILD_DIR}/${CONFIGURATION}-iphoneos/arm64/${PROJECT_NAME}.framework/${PROJECT_NAME}""${BUILD_DIR}/${CONFIGURATION}-iphoneos/armv7/${PROJECT_NAME}.framework/${PROJECT_NAME}" -output"${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework/${PROJECT_NAME}"
这个脚本是生成支持arm64 armv7 armv7s 和i386 x86_64(i386和x86_64并为用xcodebuild命令来生成,当你选择在模拟器下编译时,会生成支持这两种架构的framework)架构的framework。该脚本只允许用户在模拟器下编译,否则会报错,生成后的framework存放在工程目录的Release-universal或者Debug-universal目录下
到这一步,就已经生成了framework,下面对framework使用
Step 3
1)新建工程,选择Single View Application,命名为UseFrmeworkDemo
2)将xibFramework.framework拖入UseFrmeworkDemo中,并使用framework
选择UseFrameworkDemo|General,在Embedded Binaries和Linked Frameworks and Libraries中加入xibFramework,在拖入xibFramework时,Linked Frameworks and Libraries中就会加入这个framework.
2)command+R运行工程,可以看到xibFramework的控件在UseFrameworkDemo中能正常使用了
xibFramework 下载地址
UseFrameworkDemo 下载地址
- Xcode使用Cocoa Touch Framework新建Framework
- 使用xcode 6创建dynamic framework(cocoa touch framework)
- Cocoa Touch framework使用
- Static iOS Framework VS Cocoa Touch Framework
- 自己创建Cocoa touch FrameWork
- 动态链接库Cocoa Touch Framework
- iOS Cocoa Touch Framework 学习(1)
- framework新建与使用
- 什么是Cocoa 什么是Xcode 什么是Framework?
- cocoa xcode 添加 第三方 framework
- 什么是Cocoa 什么是Xcode 什么是Framework?
- 开发环境 : 库, FrameWork, Cocoa, Xcode
- 使用Cocoa XML-RPC Framework
- Cocoa创建与使用Framework
- iOS Universal Static Framework 手动转 XCode Cocoa Framework
- Objective-C 2.0 筆記 (5) 使用 UIKit Framework (Cocoa Touch) 之前
- 使用Xcode 5创建Framework
- 使用Xcode 5创建Framework
- 【Android进阶】Android面试题目整理与讲解
- web.xml load-on-startup
- 多用途互联网邮件扩展MIME
- Android Studio - no debuggable applications 的解决办法
- 141+142. Linked List Cycle I+II
- Xcode使用Cocoa Touch Framework新建Framework
- Linux:C语言的标准和编译器
- LineNumberReader
- ActionBar之使用ActionBar显示选项菜单项
- java annotation继承总结
- 王学岗Fragment(六)——Activity与fragment之间数据的传递
- java的Calendar类
- JSONObject、JSONArray
- 正则表达式验证