创建自己的framework

来源:互联网 发布:免费购物软件 编辑:程序博客网 时间:2024/05/04 03:16

1、创建一个framework
这里写图片描述

2、创建两个类
这里写图片描述

zwTool1:

#import <Foundation/Foundation.h>@interface zwTool1 : NSObject- (void) print;@end@implementation zwTool1- (void) print{    NSLog(@"%s",__FUNCTION__);}@end

zwTool2:

#import <Foundation/Foundation.h>@interface zwTool2 : NSObject- (void) myPrint;@end#import "zwTool1.h"@implementation zwTool2- (void) myPrint{    zwTool1 *tool = [[zwTool1 alloc]init];    [tool print];}@end

3、导入头文件
这里写图片描述

4、创建一个target,生成一个同时支持模拟器和真机的framework
这里写图片描述

5、选择 Cross-platform->Aggregate
这里写图片描述

6、选中target,点击➕新建 run script phase
这里写图片描述

7、粘贴以下脚本

set -eset +u# Avoid recursively calling this script.if [[ $SF_MASTER_SCRIPT_RUNNING ]]thenexit 0fiset -uexport SF_MASTER_SCRIPT_RUNNING=1SF_TARGET_NAME=${PROJECT_NAME}SF_EXECUTABLE_PATH="${SF_TARGET_NAME}.framework/${SF_TARGET_NAME}"SF_WRAPPER_NAME="${SF_TARGET_NAME}.framework"if [[ "$SDK_NAME" =~ ([A-Za-z]+) ]]thenSF_SDK_PLATFORM=${BASH_REMATCH[1]}elseecho "Could not find platform name from SDK_NAME: $SDK_NAME"exit 1fiif [[ "$SDK_NAME" =~ ([0-9]+.*$) ]]thenSF_SDK_VERSION=${BASH_REMATCH[1]}elseecho "Could not find sdk version from SDK_NAME: $SDK_NAME"exit 1fiif [[ "$SF_SDK_PLATFORM" = "iphoneos" ]]thenSF_OTHER_PLATFORM=iphonesimulatorelseSF_OTHER_PLATFORM=iphoneosfiif [[ "$BUILT_PRODUCTS_DIR" =~ (.*)$SF_SDK_PLATFORM$ ]]thenSF_OTHER_BUILT_PRODUCTS_DIR="${BASH_REMATCH[1]}${SF_OTHER_PLATFORM}"elseecho "Could not find platform name from build products directory: $BUILT_PRODUCTS_DIR"exit 1firm -rf buildProductsmkdir buildProducts# Build the other platform.xcrun xcodebuild -project "${PROJECT_FILE_PATH}" -target "${TARGET_NAME}" -configuration "${CONFIGURATION}" -sdk ${SF_OTHER_PLATFORM}${SF_SDK_VERSION} BUILD_DIR="${BUILD_DIR}" OBJROOT="${OBJROOT}" BUILD_ROOT="${BUILD_ROOT}" SYMROOT="${SYMROOT}" $ACTION# Smash the two static libraries into one fat binary and store it in the .frameworkxcrun lipo -create "${BUILT_PRODUCTS_DIR}/$PRODUCT_NAME.framework/$PRODUCT_NAME" "${SF_OTHER_BUILT_PRODUCTS_DIR}/$PRODUCT_NAME.framework/$PRODUCT_NAME" -output "${PROJECT_DIR}/buildProducts/$PRODUCT_NAME"cp -rf ${BUILT_PRODUCTS_DIR}/$PRODUCT_NAME.framework ${PROJECT_DIR}/buildProductsmv ${PROJECT_DIR}/buildProducts/$PRODUCT_NAME ${PROJECT_DIR}/buildProducts/$PRODUCT_NAME.framework

这里写图片描述

8、选中framework 这是需要暴露的头文件
这里写图片描述

9、commod +b 编译,选中项目找到静态库的位置
这里写图片描述

10、将库导入工程
这里写图片描述

11、导入头文件

#import <frameworktest/frameworktest.h>
 zwTool2 *ttol2 = [[zwTool2 alloc]init];    [ttol2 myPrint];

不出意外的话,会有以下崩溃
这里写图片描述

12、选中工程配置如下
这里写图片描述

13、调用结果:

2016-12-16 15:47:08.711 zwTool[66386:435568] -[zwTool1 print]
0 0
原创粉丝点击