本地Pod库对应的Podfile和Podspec如何写?

通常咱们制做的pod公有库或者是私有库都放在远程,而且每次修改都须要push;若是仅仅是放在本地进行调试的模块/组件,那么对应的podfile文件以及podspec应该如何编写呢?html

一、搭建测试项目以及framework

1)先建立一个测试项目ios

image

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

image

3)再建立一个类MTPopViewgithub

image

4)关掉MTPopView,而后在MTShopList项目中经过Add Files添加MTPopViewswift

image

5)按照正常的target相互调用那样,添加framework,以及import MTPopControlruby

image

6)编译MTShopList报错网络

image

须要在class MTPopView前面加上publicide

image

再编译运行就ok了。测试

这里swift报错缘由你们应该是很熟悉了;swift访问权限总共有private、fileprivate、internal、public、open 5种,默认状况下是internal修饰,而咱们目前是2个不一样的target进行访问,属于不一样的模块,因此另外一个target没法访问,须要修改访问权限为public便可(这里可否用open,它们的区别你知道吗?)。ui

二、编写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

image

关闭项目MTShopList

在项目MTShopList路径下,经过命令:

xk$ pod init

打开Podfile文件,添加内容:

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

再安装:

xk$ pod install

三、验证测试

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

image

编译运行项目Succeeded!

最后:本文采用这种Pod开发方式的好处就是能够一我的快速开发调试,不用每次修改完依赖库都把podspec 以及对应的库 push上去,有时候网络不稳定的状况下会等好久,影响开发效率;待最后调试的模块/组件稳定后或是多人开发仍是须要制做成私有库push上去,进行统一版本管理。

参考文献:

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

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

相关文章
相关标签/搜索