iOS. 自己Framework上传Cocospods 流程处理与问题解决

前因:

因公司需要做一些自定义动态库 且适应多项目使用,鉴于方便管理,变想放入Cocoapods管理,然后经历一番波折,写下此篇问题解方案

正题:

一、电脑具有cocoapods环境

1.
2.
3.常用命令:
pod trunk register 邮箱 '名字' --description='description'// 注册,然后CocoaPods会发送一封邮件到你的邮箱,按照提示打开一个连接激活就ok拉,最后再重复前面步骤,提交到CocoaPods官方仓库
pod cache clean --all // 清除pod缓存
pod lib lint JYUtils.podspec --allow-warnings // 校验
pod trunk push XXXX.podspec --allow-warnings // 提交到CocoaPods官方仓库
pod lib lint XXXX.podspec --allow-warnings --use-libraries //如果在自己的库中有引用到其他公有库,例如MBProgressHUD、AFNetworking等库,则需要在后面加上命令:–use-libraries
pod search // 命令重新搜索库
pod repo update     // 更新本地库

二、创建cocoapods trunk账户(有账号略过)

1.用你的电子邮件地址注册一个帐户,这将在当前设备上开始一个会话。注册cocoapods trunk命令:
$ pod trunk register 你的邮箱 '用户名' --description='描述内容' (邮箱参数是必须的,用户名和--description参数可省略)

注册后cocoapods会给你的邮箱发送一个确认cocoapods会话的邮件,打开你的邮箱,点击链接确认cocoapods会话(这个链接是验证你的帐户与当前计算机之间的连接)。
2.查看你的注册信息(必须在确认cocoapods会话后,才执行)
$ pod trunk me
显示注册信息如下所示:
- Name: 名称
- Email: 邮箱(GitHub账号)
- Since: August 2nd, 2018 19:27
- Pods:
- Test0
- JYTest0
- Sessions:
    - 
    - 
3.常用命令:
将.podspec文件提交到Cocoapods命令:
$ pod trunk push 文件名.podspec
将公共库的.podspec文件,部署到自己的私有库中,命令如下:
$ pod repo push REPO 文件名.podspec # REPO 私有索引库名
添加其他人共同维护某库,命令:
$ pod trunk add-owner 公共库名 已注册trunk的邮箱地址
移除某个维护人员,命令:
$ pod trunk remove-owner 公共库名 已注册trunk的邮箱地址
删除已发的某个版本对应的工程信息
pod trunk delete 工程名 版本号
查看trunk的所有可执行命令,运行:
$ pod trunk

三、开始创建测试库

1. 打开终端,cd <文件目录地址>(任意文件夹地址,可以是桌面),进入指定文件夹,本文测试文件夹名TestSDK_iOS
cd /Users/***/Desktop/TestSDK_iOS
2. 在你进入的目录下从cocoaPod官方下载一个模版,会自动生成一个demo。
pod lib create TestSDK_iOS
3. 紧接着会提示输入一些信息,回车之后会在我们cd的目录下帮我们创建好一个xcode模版,并自动打开项目,如果未打开项目则需要自己进入项目文件夹进行pod install 安装cocoapods资源并打开项目
What is your email?
//这是输入你开源中国申请的git邮箱账号
What platform do you want to use?? [ iOS / macOS ]
// 这里输入你使用的平台
 > iOS
What language do you want to use?? [ Swift / ObjC ]
//这里输入你使用的语言
 > ObjC
Would you like to include a demo application with your library? [ Yes / No ]
//这里输入你是否需要生成一个 demo 应用
//这里最好 Yes 这样你可以查看你创建的库是否可以使用
 > NO
Which testing frameworks will you use? [ Specta / Kiwi / None ]
// 这里输入你需要用到的测试框架,随意选
 > None
Would you like to do view based testing? [ Yes / No ]
//是否做基于视图的测试 Yes/No 都可以
 > No
What is your class prefix?
//输入前缀
 > XR
4. 进入项目文件内,把自定义的Framework包放在TestSDK_iOS/TestSDK_iOS/Classes 文件夹下
番外:同级Assets 文件夹是放置项目资源的 比如图片音频之类的
5. 配置信息,在 demo 工程中有一个 Podspec Metadata 文件夹,查看里面的白文件: 工程名. podspec 配置里面的信息,这个根据具体情况自行配置,下文有字段说明:
s.name        = 'TestSDK_iOS' #项目名称
s.version      = "1.0.1" #版本号 要和接下来上传git的tag版本号一致
s.summary      = "Test For TestSDK_iOS." #这里对你写的库进行简要的概述一下
s.description  = <<-DESC
这就是一个测试,没别的,你信不信?(这里对你写的库进行具体的使用方法说明及其他描述,稍微写一下就行后期再整改)
                   DESC
s.homepage     = "https://github.com/*********/TestSDK_iOS.git"# 你git库的地址首页,可以在开元中国创建你的库,不需要使用什么初始化方法,不要勾选 readme
s.license          = { :type => 'MIT', :file => 'LICENSE' } #这里不需要改变,使用默认,文件指向的文件名与工程中文件名要一致。
s.author           = { '名字' => '**********@qq.com' } #作者信息:账户名,账户邮箱地址
s.source           = { :git => 'https://github.com/**********/TestSDK_iOS.git', :tag => s.version.to_s } # 这里输入邮箱如果你在开元中国申请的 git 账号,那么把你在开元中国创建的项目的 https 网址输入到这里,
s.platform     = :ios
s.platform     = :ios, "9.0" #iOS 支持的最低级别,这里最低9.0
s.frameworks = "CoreVideo","OpenGLES","AVFoundation","CoreMedia","VideoToolbox","AudioToolbox" #这里输入需要用到的依赖库,如果没有特别的需要可以不用输入直接注释掉
s.vendored_frameworks = 'TestSDK_iOS/Classes/TestSDK.framework' #静态库文件的依赖,意思是执行到Classes文件夹下检索.framework类型的文件,我们放入的是动态库文件需要写入进行标注
s.pod_target_xcconfig = { 'VALID_ARCHS' => 'x86_64 armv7 arm64' }  # 如果项目已经设置 pod_target_xcconfig,添加到已有值的后面。此处解决了模拟器和真机包合并问题
6. 在git上创建我们的远程库,输入项目名称,项目描述,选择开发语言,我们做的是公开库,这里选择公开, 我们不要初始化这个工程,因为我们的工程是从本地上传上去,所以三个初始化方式都不要勾选,然后点击创建,完成我们远程库的创建。
7. 然后获取我们远程项目库的 https 地址,在第6步配置 s.name、s.source、s.homepage, 这里输入我们在开元中国创建的远程库的 https 网址
8. 在终端中输入命令行,先关联本地仓库和远程仓库
// 关联项目
cd “你工程文件夹名(Example 的上层)”
git add .
git commit -m "自定义提交信息"
git remote add origin "你工程远程仓库的地址,也就是你在git上创建的项目仓库地址"
// 上传项目
git branch -M main   
git push -u origin main
9. 校验我们的配置信息。这里有两个指令,一个是本地校验(lib),一个是远程校验(spec),当出现passed validation.时表示校验通过,此处先进行本地校验,看看本地配置是否有问题,在提交远程的时候需要进行远程校验
$ pod lib lint --allow-warnings
10. 添加信任在pod上注册你的git账号,两种方案(一繁一简),终端命令:
pod trunk register git账号(邮箱) '名称' --description='描述内容随意写'
pod trunk register git账号(邮箱)  
----------------------------------------
说明:
1、 git账号邮箱,是你在开源中国申请的 git 账号
2、'名称',可以是你的账号昵称,也可以是你的真是名称,也可以不写
3、 descrition=''这里可以随意填写也可以不写
如果出现
Please verify the session by clicking the link in the verification email that has been sent to ‘你的邮箱’
去你自己的邮箱拷贝发送的网络连接并打开,出现You can go back to your terminal now.说明验证成功,以后你这台设备,以及这个账号就不要再次验证了,如果你有多个账号,这个方法也是在告诉你的 git 推送你的库到哪个账号上去
命令:pod trunk me可在终端查看验证是否通过
-----------------------------------------
11. 提交项目到远程库在提交之前最好先进行远程校验pod spec lint,直到出现passed validation.
12. 推送版本号这里必须先推送项目,之后推送版本号,顺序不能错
git tag "0.1.0"     这个版本要要与你podspec文件中定义的版本号一致
git push --tags     推送版本号
13. 最后所有配置完成 提交到cocospods
pod trunk push TestSDK_iOS.podspec --allow-warnings
--------------------------------------------------------------------------------
 🎉  Congrats

 🚀  ADYLiveSDK_iOS (0.1.6) successfully published
 📅  August 26th, 03:46
 🌎  https://cocoapods.org/pods/ADYLiveSDK_iOS
 👍  Tell your friends!
--------------------------------------------------------------------------------

14. 成功 新建项目进行测试 pod 'TestSDK_iOS' 时,记得更新本地Cocoapods库:pod repo update 或者 pod install --repo-update

问题总结:

其他问题网络应该很多可以自行百度,说明我遇到的问题
使用自定义Framework会遇到模拟器和真机合并问题,自行测试动态库没问题但是使用上传到cocoapods时就会报错
- ERROR | [iOS] unknown: Encountered an unknown error (The 'Pods-App' target has transitive dependencies that include statically linked binaries:
等等 这种情况下可以用 --allow-warnings 来允许警告。
Ld .../Build/Intermediates.noindex/App.build/Release-iphonesimulator/App.build/Objects-normal/arm64/Binary/App normal arm64
上面的错误就是我今天遇到的 下面是解决办法
在 podspec 文件中添加 s.pod_target_xcconfig = { 'VALID_ARCHS' => 'x86_64 armv7 arm64' },如果项目已经设置 pod_target_xcconfig,添加到已有值的后面。
使用以上方式 让编译通过

闲聊

制作 FrameWork时可以剔除i386 毕竟很老旧的机型了
制作和申请过程下次在补上 因为网上众多教程这里就不详细写入了
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容