草庐IT

Swift制作私有库 GitHub(图文详解)

门前有棵葡萄树 2023-10-12 原文

XDKitSpecs 仓库

存放XDKit相关的Specs
存放XDKit相关的Specs

Swift制作私有库 GitHub(图文详解)

1.创建索引库,XDKitSpecs用于集中存放所有库的索引,勾选Add a README file这样就创建了一个初始化好了的库,如图:
image.png

完成后的仓库,如图:


image.png
2.创建组件库,XDUIExtension用于存放组件,不要勾选Add a README file 也不要添加 Add .gitignore, 需要的是一个未初始化的仓库。
image.png

完成后的仓库,如图:


image.png
3.在本地新建一个目录Modules,并在终端cd到该目录下,执行如图:
image.png
4.执行pod lib create XDUIExtension,这样就自动生成了一个项目,如图:
image.png

生成项目的目录结构,如图:


image.png
5.打开Example/XDUIExtension.xcworkspace项目,一般会自动打开,将XDUIExtension.podspec中的s.homepages.source替换成我们第2步创建的组件库地址,s.homepage记得去掉.git,如图:
image.png
6.找到Classes目录,这里是放源码的地方,删除ReplaceMe.swift,将组件源码拖进去,如图:
image.png

image.png
7.导入源码cdExample目录,执行pod install,如图:
image.png
8.此时项目的Development Pods目录中就能看到源码了,如图:
image.png
9.上传组件源码,cd到组件所在目录XDUIExtension,按照顺序执行以下命令:
find . -name ".git" | xargs rm -Rf
git init
git add .
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/ywdonga/XDUIExtension.git
git push -u origin main

执行完成后,远程仓库目录结构,如图:


image.png
10.打上tag版本号0.1.0XDUIExtension.podspec文件中的s.version一定要保持一致
git tag 0.1.0
git push origin 0.1.0
11.创建本地Spec Repo,索引地址就是第1步创建的索引仓库地址,执行命令:

pod repo add XDKitSpecs https://github.com/ywdonga/XDKitSpecs.git

12.校验索引文件.podspecscdXDUIExtension目录执行:

pod lib lint XDUIExtension.podspec --allow-warnings
执行结果如图:

image.png

13.推送索引文件,还是在XDUIExtension目录,执行命令:

pod repo push XDKitSpecs XDUIExtension.podspec --allow-warnings
执行结果如图:

image.png

14.这样在远程索引仓库就能看到我们刚推上去的组件索引了,如图:
image.png
15.使用的时候,需要在Podfile的顶部添加索引源

source "https://github.com/ywdonga/XDKitSpecs.git"
然后想其他三方库一样,添加 pod "XDUIExtension"就可以了
如图:

image.png

发布更新podspec命令记录

1.发布更新私有库podspec,XDKitSpecs为私有索引仓库

pod repo push XDKitSpecs XDUIExtension.podspec --allow-warnings

2.发布更新公开库podspec,直接发布到Pod上

pod trunk push XDUIExtension.podspec --allow-warnings

有关Swift制作私有库 GitHub(图文详解)的更多相关文章

  1. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  2. ruby - 具有身份验证的私有(private) Ruby Gem 服务器 - 2

    我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..

  3. Unity 3D 制作开关门动画,旋转门制作,推拉门制作,门把手动画制作 - 2

    Unity自动旋转动画1.开门需要门把手先动,门再动2.关门需要门先动,门把手再动3.中途播放过程中不可以再次进行操作觉得太复杂?查看我的文章开关门简易进阶版效果:如果这个门可以直接打开的话,就不需要放置"门把手"如果门把手还有钥匙需要旋转,那就可以把钥匙放在门把手的"门把手",理论上是可以无限套娃的可调整参数有:角度,反向,轴向,速度运行时点击Test进行测试自己写的代码比较垃圾,命名与结构比较拉,高手轻点喷,新手有类似的需求可以拿去做参考上代码usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;u

  4. 动漫制作技巧如何制作动漫视频 - 2

    动漫制作技巧是很多新人想了解的问题,今天小编就来解答与大家分享一下动漫制作流程,为了帮助有兴趣的同学理解,大多数人会选择动漫培训机构,那么今天小编就带大家来看看动漫制作要掌握哪些技巧?一、动漫作品首先完成草图设计和原型制作。设计草图要有目的、有对象、有步骤、要形象、要简单、符合实际。设计图要一致性,以保证制作的顺利进行。二、原型制作是根据设计图纸和制作材料,可以是手绘也可以是3d软件创建。在此步骤中,要注意的问题是色彩和平面布局。三、动漫制作制作完成后,加工成型。完成不同的表现形式后,就要对设计稿进行加工处理,使加工的难易度降低,并得到一些基本准确的概念,以便于后续的大样、准确的尺寸制定。四、

  5. Ruby - 如何处理子类意外覆盖父类(super class)私有(private)字段的问题? - 2

    假设您编写了一个类Sup,我决定将其扩展为SubSup。我不仅需要了解你发布的接口(interface),还需要了解你的私有(private)字段。见证这次失败:classSupdefinitialize@privateField="fromsup"enddefgetXreturn@privateFieldendendclassSub问题是,解决这个问题的正确方法是什么?看起来子类应该能够使用它想要的任何字段而不会弄乱父类(superclass)。编辑:equivalentexampleinJava返回"fromSup",这也是它应该产生的答案。 最佳答案

  6. ruby - 从另一个私有(private)方法中使用 self.xxx() 调用私有(private)方法 xxx,导致错误 "private method ` xxx' called” - 2

    我正在尝试获得良好的Ruby编码风格。为防止意外调用具有相同名称的局部变量,我总是在适当的地方使用self.。但是现在我偶然发现了这个:classMyClass上面的代码导致错误privatemethodsanitize_namecalled但是当删除self.并仅使用sanitize_name时,它会起作用。这是为什么? 最佳答案 发生这种情况是因为无法使用显式接收器调用私有(private)方法,并且说self.sanitize_name是显式指定应该接收sanitize_name的对象(self),而不是依赖于隐式接收器(也是

  7. 语法类似于 GitHub Flavored Markdown 的 Ruby markdown 解释器? - 2

    我使用Jekyll运行博客,并认为我会解决RedcarpetMarkdown解释器,因为它是developedandusedbyGitHub.好吧,我只是碰巧遇到了一个错误,去检查问题,然后foundthis.Maintainersays,"Asyouprobablyhavenoticed(harharharhar)Idon'thavetimetomaintainRedcarpetanymore.It'snotapriorityforme(IfindMarkdownthoroughlyboring)andit'snotapriorityforGitHub,becausewenolong

  8. ruby - vagrant 从 github 安装插件 - 2

    我们正在使用Vagrant进行部署,我们最终希望将此集群部署在Rackspace上。vagrant-rackspace插件是一个自然的选择,但它有一些错误,这些错误未包含在最新的0.1.1版本中(notablythatvagrantprovisiondoesn'twork)。我已经在我的personalfork中解决了这个问题通过合并其他人的工作来对存储库进行改造。是否可以从github安装vagrant插件?显而易见的事情没有奏效:[unix]$vagrantplugininstallvagrant-rackspace--plugin-sourcehttps://github.com

  9. ruby - 如何在 Ruby 中实现私有(private)内部类 - 2

    来自Java,我正在尝试在Ruby中实现LinkedList。我在Java中实现它的通常方法是有一个名为LinkedList的类和一个名为Node的私有(private)内部类,其中LinkedList的每个对象都作为Node对象。classLinkedListprivateclassNodeattr_accessor:val,:nextendend我不想将Node类暴露给外部世界。然而,通过Ruby中的这个设置,我可以使用这个访问LinkedList类之外的私有(private)Node类对象-node=LinkedList::Node.new我知道,在Ruby1.9中,我们可以使用

  10. ruby - 如何让 GitHub 页面使用 master 分支? - 2

    我有一个使用Jekyll托管在GitHub上的静态网站。问题是,我真的不需要master分支,因为存储库唯一包含的是网站。这样我就必须gitcheckoutgh-pages,然后gitmergemaster,然后gitpushorigingh-pages。有什么简单的方法可以摆脱gh-pages分支并直接从master推送? 最佳答案 Theproblemis,Idon'treallyneedthemasterbranch,astheonlythingtherepositorycontainsisthewebsite.Isthere

随机推荐