热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CocoaPods私有库搭建的记录

前言随着项目的业务增加以及马甲包进度的跟进,一些重复的独立业务以私有库的方式引入到项目中对于项目进度的开发就显得越发的迫切了,本文主要记录自己搭建私有

前言

随着项目的业务增加以及马甲包进度的跟进,一些重复的独立业务以私有库的方式引入到项目中对于项目进度的开发就显得越发的迫切了,本文主要记录自己搭建私有库时的整个流程,以防后面再次搭建时忘记,方便自己查阅。

整个记录流程中私有库的存储是在码云中,也可以在公司自己的git仓库中,自己选择即可。

私有库的搭建涉及到创建索引库和私有库,这里解释下两者:

索引库:存放spec文件的仓库,找到代码位置的索引。

私有库:存放代码的仓库。

两者像指针和对象的关系,指针中存放对象的地址,可以通过指针找到对象。两个仓库创建后,通过命令行将两者关联起来,这样整个私有库的搭建过程就完成了。


1、创建索引库

创建的这个空的仓库,是用来存放我们自己所有的私有库的 spec 文件, 就如同官方的 https://github.com/CocoaPods/Specs 是用来存放所有官方的 specs 文件一样。


2、将索引库添加到本地cocoapods仓库
 

通过命令行添加自己的索引库到本地仓库

pod repo add wyonSpec https://gitee.com/wyon_wang/wyon-spec.git

添加完毕后查看本地仓库

以上就创建完成了一个自己的索引仓库,该仓库只存放各组件的索引文件,不存放代码!!!


3、创建工程模板

wyondeMacBook-Pro:~ wyon$ cd /Users/wyon/Desktop/TestProject
wyondeMacBook-Pro:TestProject wyon$ pod lib create YGTool
Cloning `https://github.com/CocoaPods/pod-template.git` into `YGTool`.
Configuring YGTool template.
security: SecKeychainSearchCopyNext: The specified item could not be found in the keychain.------------------------------To get you started we need to ask a few questions, this should only take a minute.If this is your first time we recommend running through with the guide: - https://guides.cocoapods.org/making/using-pod-lib-create.html( hold cmd and double click links to open in a browser. )What platform do you want to use?? [ iOS / macOS ]> iOSWhat language do you want to use?? [ Swift / ObjC ]> ObjCWould you like to include a demo application with your library? [ Yes / No ]> YESWhich testing frameworks will you use? [ Specta / Kiwi / None ]> NoneWould you like to do view based testing? [ Yes / No ]> NoWhat is your class prefix?> YG_
security: SecKeychainSearchCopyNext: The specified item could not be found in the keychain.
security: SecKeychainSearchCopyNext: The specified item could not be found in the keychain.
security: SecKeychainSearchCopyNext: The specified item could not be found in the keychain.
security: SecKeychainSearchCopyNext: The specified item could not be found in the keychain.
security: SecKeychainSearchCopyNext: The specified item could not be found in the keychain.
security: SecKeychainSearchCopyNext: The specified item could not be found in the keychain.
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m Running pod install on your new library.Analyzing dependencies
Downloading dependencies
Installing YGTool (0.1.0)
Generating Pods project
Integrating client project[!] Please close any current Xcode sessions and use `YGTool.xcworkspace` for this project from now on.
Pod installation complete! There is 1 dependency from the Podfile and 1 total pod installed.[!] Your project does not explicitly specify the CocoaPods master specs repo. Since CDN is now used as the default, you may safely remove it from your repos directory via `pod repo remove master`. To suppress this warning please add `warn_for_unused_master_specs_repo => false` to your Podfile.Ace! you're ready to go!We will start you off by opening your project in Xcodeopen 'YGTool/Example/YGTool.xcworkspace'To learn more about the template see `https://github.com/CocoaPods/pod-template.git`.
To learn more about creating a new pod, see `https://guides.cocoapods.org/making/making-a-cocoapod`.
wyondeMacBook-Pro:TestProject wyon$

通过该命令行自动创建一个模板工程,其中包含我们所需的索引文件,格式为.podspec。创建完后会自动打开该工程。


4、添加我们的组件到指定目录

这样我们本地私有库完成,接下来制作远端仓库


5、将本地库上传码云 

这里是新创建一个项目,为我们真正存放代码的仓库。
我们可以根据码云中的提示上传模板文件

  通过命令行上传组件文件

$ git add .
$ git commit -m '模板工程初始化'
$ git push -u origin master

之后我们修改下模板工程中的.podspec文件,如下图 


6、验证spec文件

注意这里我们上次的代码一定要走的通,不然会校验失败。

wyondeMacBook-Pro:YGTool wyon$ cd /Users/wyon/Desktop/TestProject/YGTool
wyondeMacBook-Pro:YGTool wyon$ pod lib lint --private-> YGTool (1.0.0)- NOTE | xcodebuild: note: Using new build system- NOTE | xcodebuild: note: Using codesigning identity override: -- NOTE | xcodebuild: note: Build preparation complete- NOTE | [iOS] xcodebuild: note: Planning- NOTE | [iOS] xcodebuild: note: Building targets in parallel- NOTE | [iOS] xcodebuild: warning: Skipping code signing because the target does not have an Info.plist file and one is not being generated automatically. (in target 'App' from project 'App')YGTool passed validation.

验证成功后打分支,这里的分支一定要和.podspec文件中的版本号一致

$ git tag 1.0.0
$ git push --tags

7、私有库和索引库建立关联

pod repo push wyonSpec YGTool.podspec

这样就同步好了远程和本地索引库,到这里私有库搭建完毕,可以通过命令行搜索下自己的仓库查看一下

pod search YGTool



 


推荐阅读
  • HDU 2537 键盘输入处理
    题目描述了一个名叫Pirates的男孩想要开发一款键盘输入软件,遇到了大小写字母判断的问题。本文提供了该问题的解决方案及实现方法。 ... [详细]
  • 本文详细介绍了如何在PHP中使用Memcached进行数据缓存,包括服务器连接、数据操作、高级功能等。 ... [详细]
  • 来自FallDream的博客,未经允许,请勿转载,谢谢。一天一套noi简直了.昨天勉强做完了noi2011今天教练又丢出来一套noi ... [详细]
  • 本文详细介绍了在PHP中如何获取和处理HTTP头部信息,包括通过cURL获取请求头信息、使用header函数发送响应头以及获取客户端HTTP头部的方法。同时,还探讨了PHP中$_SERVER变量的使用,以获取客户端和服务器的相关信息。 ... [详细]
  • 本文详细介绍了在MyBatis框架中如何通过#和$两种方式来传递SQL查询参数。使用#方式可以提高执行效率,而使用$则有助于在复杂SQL语句中更好地查看日志。此外,文章还探讨了不同场景下的参数传递方法,包括实体对象、基本数据类型以及混合参数的使用。 ... [详细]
  • java datarow_DataSet  DataTable DataRow 深入浅出
    本篇文章适合有一定的基础的人去查看,最好学习过一定net编程基础在来查看此文章。1.概念DataSet是ADO.NET的中心概念。可以把DataSet当成内存中的数据 ... [详细]
  • 题面:P3178[HAOI2015]树上操作好像其他人都嫌这道题太容易了懒得讲,好吧那我讲。题解:第一个操作和第二个操作本质上是一样的&# ... [详细]
  • 使用 ModelAttribute 实现页面数据自动填充
    本文介绍了如何利用 Spring MVC 中的 ModelAttribute 注解,在页面跳转后自动填充表单数据。主要探讨了两种实现方法及其背后的原理。 ... [详细]
  • 本文详细介绍了Socket在Linux内核中的实现机制,包括基本的Socket结构、协议操作集以及不同协议下的具体实现。通过这些内容,读者可以更好地理解Socket的工作原理。 ... [详细]
  • 在学习了Splay树的基本查找功能后,可能会觉得它与普通的二叉查找树没有太大的区别,仅仅是通过splay操作减少了时间开销。然而,Splay树之所以被誉为“序列之王”,主要在于其强大的区间操作能力。 ... [详细]
  • 本文探讨了如何选择一个合适的序列化版本ID(serialVersionUID),包括使用生成器还是简单的整数,以及在不同情况下应如何处理序列化版本ID。 ... [详细]
  • Unity技巧:实现背景音乐的开关功能
    本文详细介绍了如何在Unity中通过脚本控制背景音乐的开启与关闭,适合初学者参考。 ... [详细]
  • 本文探讨了一个Web工程项目的需求,即允许用户随时添加定时任务,并通过Quartz框架实现这些任务的自动化调度。文章将介绍如何设计任务表以存储任务信息和执行周期,以及如何通过一个定期扫描机制自动识别并加载新任务到调度系统中。 ... [详细]
  • 探讨多种方法来确定Java对象的实际类型,包括使用instanceof关键字、getClass()方法等。 ... [详细]
  • selenium通过JS语法操作页面元素
    做过web测试的小伙伴们都知道,web元素现在很多是JS写的,那么既然是JS写的,可以通过JS语言去操作页面,来帮助我们操作一些selenium不能覆盖的功能。问题来了我们能否通过 ... [详细]
author-avatar
手机用户2502903481
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有