iOS 使用pod管理自己的代码

使用pod管理代码的好处

通常在开发的过程中,大多时候,我们会处理一类相同的操作,比如对于公共父类的封装,对于系统的类写的类别,我们为了避免写一些重复的代码。为了以后方便在其他App中使用,我们可以使用Cocoapods把这些小点子,小功能,可以封装成一个pod,当下次使用的时候,只需简单配置就可以了。这一点特别是在公司开发多个项目的时候,可以很方便快速的共享公共的代码,节约开发时间,这就是为什么好多公司喜欢组件化管理代码。至于库是创建私有的还是公共的,看自己和公司要求而定。本篇主要以创建公共库示例,进行阐述。

1. 创建一个工程

打开终端,切换到你要创建的位置的目录,我这里是桌面/desktop/pod

 cd desktop/pod
pod lib create LPodTest
  • 当被问及创建Swift还是OC项目,按自己要求回答,我选择ObjC;
  • 当被问及是否创建一个demo应用包含在工程里,根据需要,如果需要写一个demo示例,就选择Yes,否则选择NO,我这里选择Yes;
  • 当被问及是否需要使用测试Framwork,选择NO;
  • 当被问及是否需要做接界面调试,我这里选择NO;
  • 还有一个就是工程文件的前缀,我这里是自己的名字的缩写,这个随意写;

iOS 使用pod管理自己的代码_第1张图片

 

2.填写Pod的Metadata和验证

  • .podspec这个文件主要是用来描述pod的版本号,首页(homepage),作者信心等,具体的可以参看官方offical reference page
  • README如果你使用过GitHub,你肯定知道README文件的重要性,这个文件可以使用Markdown语法,主要展示在GitHub工程上的首页。README文件对于使用这个pod库的人来说,有和没有这个文件,区别是很明显的,此外这还有助于创建一个高质量的 CocoaPods Quality Index
  • LICENSE要想是Spec仓库接收,就必须包含一个license。(这个license也可以用github上的, 创建仓库的时候选择mit即可) 命令pod lib create 自动创建使用的是 MIT license;
    其实通过pod lib lint 这个命令,Cocoapods已经帮我们创建了一个模板我们只需要在里面根据需要你进行配置即可.没有用到的注释(#开头的)可以删除掉,看起来舒服一些.

iOS 使用pod管理自己的代码_第2张图片

 

接下来,我们做一个远程验证

pod lib lint LPodTest.podspec
-> LPodTest (0.1.0)
    - WARN  | url: The URL (https://github.com/LDreame/LPodTest) is not reachable.

[!] LPodTest did not pass validation, due to 1 warning (but you can use `--allow-warnings` to ignore it) and all results apply only to public specs, but you can use ```--private` to ignore them if linting the specification for a private pod.
[!] The validator for Swift projects uses Swift 3.0 by default, if you are using a different version of swift you can use a `.swift-version` file to set the version for your Pod. For example to use Swift 2.3, run: 
    `echo "2.3" > .swift-version`.
You can use the `--no-clean` option to inspect any issue.

这个意思是告诉我们,LPodTest.podspec文件里面有一个不符合要求,需要进行修改:
需要指定一个可用的pod的首页URL,因为我们还没有在GitHub上面创建任何项目有关的信息,所以不能通过
因为我的LPodTest.podspec文件s.summary 和s.description已经简单的做了介绍,如果没有做任何修改的话,还会出现以下两个警告:

    - WARN  | The summary is not meaningful.
    - WARN  | The description is not meaningful.

如果按照上面的步骤一步一步下来,我们还没有在GitHub上面创建相关的仓库,因此可以先进入GitHub账户创建仓库

iOS 使用pod管理自己的代码_第3张图片

在git上创建好仓库后 , 方式1:可以clone下来然后把pod的demo工程拖进去,方式2:也可以把pod的工程和远程仓库进行关联 .

我当时采用的是clone下来git仓库,然后把pod的demo拖进去, 但是拖进去之后,发现sourse tree没有识别出新加入的文件 , 经过一番百度+排查,发现是pod的demo工程含有.git隐藏文件夹, github上clone下来的工程也有.git隐藏文件夹, 删除了pod工程下.git就可以了. ( command + shift + .(小数点) 可以查看finder当前目录下的隐藏文件.)

做完以上操作没有问题的话, 就可以做验证了:

 pod lib lint LPodTest.podspec

 -> LPodTest (0.1.0)

LPodTest passed validation.

只要见到passed validation就是成功通过了验证.  如果出现错误 , 基本上是 .podspec 下的配置有问题,根据提示的错误原因排查就行

3. 添加自己的代码

通过以上步骤,我们只是创建了一个合格的空的工程,并没有实现任何功能,接下来我们就需要把自己要实现的功能代码方进去.

 

iOS 使用pod管理自己的代码_第4张图片

 

找到工程中ReplaceMe文件删除,在这个目录下添加自己的代码即可.
如果你在创建工程时候创建了一个包含demo的工程,那么你可以先切换到工程的Example文件目录下面使用命令:

pod install 
Analyzing dependencies
Fetching podspec for `LPodTest` from `../`
Downloading dependencies
Installing LPodTest 0.1.0 (was 0.1.0)
Generating Pods project
Integrating client project
Sending stats
Pod installation complete! There is 1 dependency from the Podfile and 1 total pod installed.

成功以后你就可以在demo文件中使用你的功能文件了.如果不能导入,那么可以commond + B编译一下再导入使用

4. 提交自己的pod

Step 1: Tagging

Specs仓库是用来存放GitHub上面所有公共Pod的索引的文件,我们要做到就是让本地的pod在Specs建立联系.在做这个之前,需要将我们完善后的工程代码,打一个tag,同步到服务端:

git tag 0.1.0
qddios2deiMac:example qddios$ git push origin 0.1.0
Total 0 (delta 0), reused 0 (delta 0)
To github.com:LDreame/LPodTest.git
 * [new tag]         0.1.0 -> 0.1.0

Step 2 :验证

终端切换到LPodTest.podspec文件所在的目录下面,运行命令,这个是本地验证,检查.podspec是否有问题

pod spec lint LPodTest.podspec

 -> LPodTest (0.1.0)

Analyzed 1 podspec.

LPodTest.podspec passed validation.

Step 3 : 提交pod 到Specs仓库

pod trunk push LPodTest.podspec
Updating spec repo `master`
Validating podspec
 -> LPodTest (0.1.0)

Updating spec repo `master`

--------------------------------------------------------------------------------
 ?  Congrats

 ?  LPodTest (0.1.0) successfully published
 ?  March 3rd, 03:07
 ?  https://cocoapods.org/pods/LPodTest
 ?  Tell your friends!
--------------------------------------------------------------------------------

这一步也比较坑,因为是用的demo工程的配置,加上复制别人的,所以本地校验通过,但是push的时候有权限问题,还是找到.podspec文件,尽量都改成自己设置. 

还有一个,pod push的时候,一定需要要保证git也push过了,git上的tag与.podspec上的版本号一致.

5. pod search 检验是否可用

大多情况下会出现这个问题:

[!] Unable to find a pod with name, author, summary, or descriptionmatching `LPodTest

这主要是因为在本地索引里面没有, 解决办法

  1. pod setup (不行,实用方法二)
  2. pod repo update(不行,试用方法三)
  3. 前往这个路径下~/Library/Caches/CocoaPods删除search_index.json文件 , 或者使用终端命令删除:
rm ~/Library/Caches/CocoaPods/search_index.json

然后重新搜索.

 

iOS 使用pod管理自己的代码_第5张图片

 

主要文章 https://www.jianshu.com/p/41611b14942b

爬坑参考文章 https://www.jianshu.com/p/283584683b0b

你可能感兴趣的:(零碎知识点)