iOS framework制作 SDK制作
在桌面上新建文件夹 XXXSDK,然后Xcode新建workspace到该文件夹里

现在项目结构如下:

打开XXXSDK.xcworkspace,File -> New -> Project

demo文件和framework文件都添加到XXXSDK.xcworkspace下

现在项目结构如下:

配置一下项目需要支持的系统和平台

修改Build Setting
的一些配置
Build Active Architecture Only
设为NO

Mach-O Type
为Static Library

下面开始创建bundle文件,不需要的可以跳过

创建好了后修改bundle
的Build Setting
的一些配置
Base SDK
设为iOS
,Build Active Architecture Only
设为NO

Installation Directory
的值删除掉

Versioning System
设为None

配置好后就可以往framework里面添加业务代码了
如图我添加了测试代码进来,如果有xib、图片、plist等资源文件,需要加到bundle里面去

把需要暴露的头文件拖到Public
下面

在这里引用头文件

XXXSDK
和XXXResource
分别点击对应的Edit Scheme
,把Build Configuration
设置为 Release
,XXXSDKDemo
也可以在这里设置为Release


接下来引入业务代码需要用到的pod库,不需要的可以跳过
打开终端,cd到主目录创建Podfile
文件

然后打开Podfile
,按以下格式输入需要的库,需要指明workspace
和project
,完成后pod install

use_frameworks!
platform :ios, '9.0'
workspace 'XXXSDK.xcworkspace'
target 'XXXSDKDemo' do
project 'XXXSDKDemo/XXXSDKDemo.xcodeproj'
pod 'AFNetworking'
pod 'MBProgressHUD'
end
target 'XXXSDK' do
project 'XXXSDK/XXXSDK.xcodeproj'
pod 'AFNetworking'
pod 'MBProgressHUD'
end
现在项目结构如下:

然后打开项目编译一下bundle和framework
编译成功之后,在demo这里把framework加进来


这里设置为 Do Not Embed

在Build Phases
下面把bundle
文件添加进来

现在就可以在Demo里面正常访问SDK里面的文件和资源了

bundle
的info.plist
里面需要把Executable file
这项删除,不然上传提审会报错

到此SDK就制作完毕了,如果给别人用时,需要用到podSpec文件引入,参考我的之前的文章。https://www.jianshu.com/p/563df65430d8