乐趣区

关于ios:CocoaPods仅在本地Pod对应的Podfile和Podspec如何写

个别咱们制作的 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 MTShopList
pod '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/…

退出移动版