个别咱们制作的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/...