1、 需求

我们要提供一个iOS 私有 SDK, 对方可以通过cocoapods安装, 并且只能看到头文件

2、大致流程

  • 使用Xcode创建一个framework工程, 在里面编写你需要提供的功能
  • 创建podspec文件, 依赖这个framework, 然后上传到Cocoapods.

3、具体流程

如果我们单独创建一个framework工程, 如果有需求修改每次都要导出framwork在demo工程中调试, 这就很麻烦,所以今天创建一个framework+demo的混合工程, 在一个工程中包含framework工程+demo工程+Pods工程。结构如下:

混和工程创建步骤

demo github地址

Step1: 创建Demo工程, 取名为MySDKDemo

  • 创建完成加入Podfile文件, 并执行Pod install
platform :ios, '9.0'
target 'MySDKDemo' do
end

Step2: 创建framework工程, 取名为MySDK

Step3: 关联项目

  • 把创建好的MySDK移动到MySDKDemo下面
  • 然后把MySDK工程文件拖进项目
  • 拖入之后

Step4: 配置Podfile

 platform :ios, '9.0'#这里需要添加
workspace 'MySDKDemo.xcworkspace'target 'MySDKDemo' do# Comment the next line if you don't want to use dynamic frameworksuse_frameworks!# Demo工程依赖的第三方, 如果和SDK依赖的一致, 则Pod install的只会安装一份pod 'SVProgressHUD'pod 'AFNetworking'endtarget 'MySDK' do#需要添加SDK路径,project './MySDK/MySDK.xcodeproj'# MySDK依赖 SVProgressHUD 和 AFNetworkingpod 'SVProgressHUD'pod 'AFNetworking'
end
  • cd 到MySDKDemo路径下, 执行pod install

  • 当前选中demo工程进行调试
  • 选中SDK, 进行编译

Step5: 联调

  • 在demo中需要使用的时候,先在MySDK工程中command + B(确保demo中有效使用)
  • demo中引入头文件#import <MySDK/MySDK.h>

以上工程架构搞定, 接下来开始改动MySDK工程, 进行测试

MySDK工程中编写需求代码

  • 在MySDK目录下创建一个Hud类进行测试
#import "Hud.h"
#import <SVProgressHUD.h>
@implementation Hud
- (void)showToast:(NSString *)msg {[SVProgressHUD showInfoWithStatus:msg];
}
@end
  • 拖进需要暴露的头文件
  • 在MySDK.h中引入你的Hud#import <MySDK/Hud.h>
  • 在demo中使用
#import <MySDK/MySDK.h>[Hud showToast:@"Hello"];

导出framework


发布到Cocoapods

  • 创建MySDK.podspec文件, 并把导出的MySDK.framework一同放入同一个文件
Pod::Spec.new do |s|s.name         = "MySDK"s.version      = "1.0.0"s.summary      = "测试用SDK"s.description  = <<-DESC
测试用SDK, 使用OC实现DESCs.homepage     = "https://github.com/nieyinlong/MySDK_iOS"s.author           = { 'nieyinlong' => 'nyl0819@126.com' }s.platform     = :ios, "9.0"s.source       = { :git => "https://github.com/nieyinlong/MySDK_iOS.git", :tag => s.version }# 过不支持真机调试则加上下面的s.pod_target_xcconfig = {'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64'}s.user_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' }# 不支持真机结束s.vendored_frameworks = 'MySDK.framework's.dependency 'AFNetworking', '~> 4.0's.dependency 'SVProgressHUD'
end
  • 执行发布命令
  • cd 到MySDK_iOS
pod lin lint --allow-warnings
pod tunk push

发布成功即可在其他项目中使用

pod 'MySDK'

报错解决’MySDK/MySDK.h’ file not found

demo github地址

教你一步一步开发iOS私有SDK 到并上传到cocoapods相关推荐

  1. 微信公众号开发JSSDK上传图片(多图上传)

    前面做了微信公众号开发,涉及到了图片上传功能.微信jssdk-api带有一套完整的调用选择本地图片上传的功能,很多朋友在问到多图上传的问题.在这里分享一下自己的做法,其实并不是自己的做法,就是完全按照 ...

  2. Spring Boot(5) web开发(3)拦截器、文件上传、异常处理

    Spring Boot(5) web开发(3)拦截器.文件上传.异常处理 学习视频: https://www.bilibili.com/video/BV19K4y1L7MT?p=49&spm_ ...

  3. PHP开发微信公众号,实现上传永久素材

    众号永久素材从名字可以知道, 我们的永久素材上传到微信服务器后, 只要你不删除, 永久有效, 可以使用. 所以我们上传永久素材后, 获取它的media_id, 直接存入到我们的web服务器数据库, 这 ...

  4. 用Swift实现iOS相机及相册图片上传

    最近要做一个iOS相机及相册图片上传,其中遇到了这些问题:1.图片增删在UICollectionView里的变化:2.获取相机拍摄的照片和相册的照片:3.将PHAsset对象转为UIImage对象: ...

  5. iOS开发中集成阿里云视频上传SDK总结

    阿里云iOS视频上传SDK说明文档 安装 说明1:这两个Framework均需导入. 说明2:此处引入头文件 #import <VODUpload/VODUploadClient.h> # ...

  6. (0081)iOS开发之无限后台定位并上传数据到服务器

    关键词:ios 后台持续定位 iOS 后台的理解 // http://blog.csdn.net/u013773524/article/details/52153917 // http://blog. ...

  7. iOS架构-自动打包并上传到App Store(python)(21)

    这里是摘自一篇用python 语法写的脚本,这里只是为了更好的理解自动化打包上传App Store的原理的. 一. iOS 自动打包并上传到App Store(python) 我们平时大都是用Appl ...

  8. iOS fastlane 自动打包,上传蒲公英

    文章目录 前言 fastlane 介绍: 1. 安装环境 1.1 安装 Homebrew 1.2 安装 fastlane 2. fastlane 配置 2.1 进入到工程目录 .xcworkspace ...

  9. 网站开发常用jQuery插件总结(15)上传插件blueimp

    在介绍这个插件之前,先吐槽一下.这个插件功能很强大.带有的功能有:上传(单个文件或批量文件),自动上传或点击按钮上传,上传前缩略图显示,判断文件格式,上传前的文件操作,上传时进度条显示等功能.如果你用 ...

最新文章

  1. mysql  基本操作(二)
  2. MySQL 之视图、 触发器、事务、存储过程、内置函数、流程控制、索引(二)
  3. 解决iPhone网络软件在睡眠情况断线问题
  4. db2和mysql性能优化_DB2数据库性能调优的十个办法
  5. 怎样在减少数据中心成本的同时不牺牲性能?
  6. Problem I: 函数---判断某年某月某日是这一年中的第几天
  7. navicate使用小技巧
  8. linux root密码激活,Linux - root初始密码设置
  9. MySQL 跳过权限校验
  10. php apache 404,如何从PHP显示默认的Apache 404
  11. C语言中如何使用system函数
  12. 移动机器人路径规划:人工势场法
  13. Ubuntu 环境搭建系列--ubuntu20.04 tftp服务搭建
  14. 金融:收益利率计算器
  15. 小科普:浏览器的神玩法,将开启万能版浏览器?
  16. java黄金分割点游戏_黄金点游戏(单机版)
  17. 回溯法之符号三角形问题
  18. 【上课课件整理复习】第六章 网页数据的采集(1)
  19. 如何使用Robostudio加载地图?
  20. 什么是微服务?微服务架构的优缺点、应用

热门文章

  1. 斯阔谷冬奥会首次使用计算机,1960年第八届美国斯阔谷冬奥会
  2. FASTJSON性能优化
  3. ​力扣解法汇总732-我的日程安排表 III
  4. mysql frm 英文全称_考frm是全英文?
  5. 巴菲特致股东的一封信:1985年
  6. 计算机电子信息工程可以做什么的,电子信息工程就业方向 毕业后可以做什么...
  7. p3000显卡 驱动 linux,NVIDIA Linux官方驱动2010年度回顾
  8. 计算机科学与技术外文译文,计算机科学与技术外文翻译.doc
  9. 非负随机变量的数学期望
  10. 一院与极飞科技开展合作交流