iOS:打SDK、Framewrok步骤

1、新建打framework工程,创建Cocoa Touch Framework工程,修改Build Settings下搜索mach-o,修改Mach-O Type 为静态库,Static Library
2、新建Targe-> Cross-platform->Aggregate->Steering_St(sdk,Steering_St是sdk名字)
3、Targets-》Steering_St->Build Phases->New Run Script Phase 添加成功之后,会有Run Script ,添加一段代码:

Constants

SF_TARGET_NAME=${PROJECT_NAME}

自定义的用来存放最后合并的framework

UNIVERSAL_OUTPUTFOLDER={CONFIGURATION}-universal

IPHONE_DEVICE_BUILD_DIR={CONFIGURATION}-iphoneos

WORKSPACE_NAME={PROJECT_NAME}

clean build是先清除原来的build

xcodebuild -workspace {YO_SCHEME} -sdk iphonesimulator -configuration"{WORKSPACE_NAME} -scheme {CONFIGURATION}"clean build

build project

xcodebuild -project "{TARGET_NAME}" -configuration "{BUILD_DIR}" OBJROOT="{BUILD_ROOT}" CONFIGURATION_BUILD_DIR="{SYMROOT}" ARCHS='arm64' VALID_ARCHS='arm64' $ACTION

xcodebuild -project "{TARGET_NAME}" -configuration "{BUILD_DIR}" OBJROOT="{BUILD_ROOT}" CONFIGURATION_BUILD_DIR="{SYMROOT}" ARCHS='armv7 armv7s' VALID_ARCHS='armv7 armv7s' $ACTION

Copy the framework structure to the universal folder (clean it first)

因为framework的合并,lipo只是合并了最后的二进制可执行文件,所以其它的需要我们自己复制过来

先移除原来的

rm -rf "{UNIVERSAL_OUTPUTFOLDER}"
cp -R "{CONFIGURATION}-iphonesimulator/{UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework"

合并模拟器和真机的架构

lipo -create "{CONFIGURATION}-iphonesimulator/{PROJECT_NAME}" "{CONFIGURATION}-iphoneos/{PROJECT_NAME}" -output "{PROJECT_NAME}.framework/{UNIVERSAL_OUTPUTFOLDER}/{SRCROOT}/../../Steering_Test/Build/Steering_framework.framework"
4、为framework工程添加cocopods,进入framework目录下,使用命令:vi Podfile 编辑时加入:
platform :'ios','7.1'
target 'Steering_Framework' do

pod 'AFNetworking', '~> 3.1.0'
pod 'SBJson4', '~> 4.0.4'
pod 'MBProgressHUD', '~> 1.0.0'
pod 'SDWebImage', '~> 4.0.0-beta2'
pod 'BaiduMapKit', '~> 2.10.2'
end

:wq(保存退出)后,执行命令pod install 。重新打开framework时,工程已经添加了cocopods
5、cd SteeringFramework(进入到当前目前下),关联该framework工程和要打成framework的文件,找到要依赖的文件的路径,使用命令ln -s 要关联的文件路径 framework路径(ln -s ~/Desktop/QKProject1/Steering_Test/class ./Steering_Framework/)(ps:切记:一定要进入当前framework下面),使用ls 查看是否包含要依赖的文件,在framework工程中通过add file(切记是加入到Aggregate下面)
6、把对外暴露出来的.h文件移入Steering_Framework->Build Phases->Headers ->Public下面,如图:
7、在该工程的.h文件中加入要暴露出来的.h文件,如图
至此,该framework工程结束
8.选中Steering_Framework工程的真机和模拟器各编译一次,生成对应真机和模拟器的framework,如图:
9、选中Steering_St,合并真机和模拟器的framework,如图
10、确认使用该framework工程的项目的sdk是最新的,并且在生成改framework之前,要把要使用这个framework项目下面的framework删除,编译过framework的工程之后,使用framework的项目(例如:督导,因为督导的framework可以先放在督导的一个项目下面)会自动生成新的framework
11、提交包含framework的项目(督导)到svn,那么通过cocopods关联使用督导build文件下面的framework就是最新的
12、在使用青客在线项目之前,需要进入到该目录下面,编辑:vi Podfile:
删除之前的framework:pod 'Steering_framework', :podspec => '~/Desktop/QKProject1/QK_Online_1.3.0/QK_Online/Sender/Steerings_SDK/Steering_framework.podspec'
执行命令:pod install
13、生成新的framework:也需要进入到青客在线项目的目录下,编辑 vi Podfile:
添加:pod 'Steering_framework', :podspec => '~/Desktop/QKProject1/QK_Online_1.1.0/QK_Online/Sender/Steerings_SDK/Steering_framework.podspec'
执行命令:pod install

你可能感兴趣的:(iOS:打SDK、Framewrok步骤)