个别咱们制作的pod私有库或者是公有库都放在近程,并且每次批改都须要push;如果仅仅是放在本地进行调试的模块/组件,那么对应的podfile文件以及podspec应该如何编写呢?

1、搭建测试项目以及framework

1)先创立一个测试项目

2)创立一个framework,放到和测试项目同一个目录下

3)再创立一个类MTPopView

4)关掉MTPopView,而后在MTShopList我的项目中通过Add Files增加MTPopView

5)依照失常的target互相调用那样,增加framework,以及import MTPopControl

6)编译MTShopList报错

须要在class MTPopView后面加上public

再编译运行就ok了。

这里swift报错起因大家应该是很相熟了;swift拜访权限总共有private、fileprivate、internal、public、open 5种,默认状况下是internal润饰,而咱们目前是2个不同的target进行拜访,属于不同的模块,所以另一个target无法访问,须要批改拜访权限为public即可(这里是否用open,它们的区别你晓得吗?)。

2、编写pod文件

1)如何编写本地测试的podspec?

通过命令pod spec create MTPopControl生成主动的podspec文件,而后替换以及删除本人不想要的命令;这里就间接简化写了,如下:

Pod::Spec.new do |spec|  spec.name         = "MTPopControl"  spec.version      = "0.0.1"  spec.summary      = "A short description of MTPopControl."  spec.homepage     = "http://EXAMPLE/MTPopControl"    spec.license      = "MIT"  spec.author       = { "xk" => "" }    #近程push的写法  #spec.source       = {:git => 'https://github.com/xxx/xxxxx.git', :tag => spec.version}  spec.source       = { :path => '.' }  spec.source_files  = "MTPopControl"    spec.requires_arc = true  spec.swift_version = "5.0"  spec.ios.deployment_target = "11.0"  end

次要是关注属性spec.source的写法不同了,咱们这里是本地

官网的示例:

pod 'AFNetworking', :path => '~/Documents/AFNetworking'

这个时候就不能通过命令 pod lib lint-本地验证你的pod是否无效,会报错的,因为咱们这里是本地门路。

xk$ pod lib lint MTPopControl -> MTPopControl    - ERROR | spec: The specification defined in `MTPopControl` could not be loaded.Is a directory @ io_fread - MTPopControl[!] MTPopControl did not pass validation, due to 1 error.You can use the `--no-clean` option to inspect any issue.

2)podfile如何编写?

首先删除framework对应的target

敞开我的项目MTShopList

在我的项目MTShopList门路下,通过命令:

xk$ pod init

关上Podfile文件,增加内容:

# Pods for MTShopListpod 'MTPopControl', :path => '../MTPopControl'

再装置:

xk$ pod install

3、验证测试

关上生成的workspace,这个时候就能看到pod对应的project比咱们平时的我的项目多了一个Development Pods文件夹,外面放的就是刚导入的framework。

编译运行我的项目Succeeded!

最初:本文采纳这种Pod开发方式的益处就是能够一个人疾速开发调试,不必每次批改完依赖库都把podspec 以及对应的库 push下来,有时候网络不稳固的状况下会等很久,影响开发效率;待最初调试的模块/组件稳固后或是多人开发还是须要制作成公有库push下来,进行对立版本治理。

参考文献:

【1】https://www.raywenderlich.com...

【2】https://guides.cocoapods.org/...