iOS本地项目依赖项(CocoaPods管理本地库)--csdn

来源:互联网 发布:折扣怎么算法 编辑:程序博客网 时间:2024/04/27 10:38

iOS做本地依赖项其实是比较麻烦的,做静态库.a和.framework,但是当你用静态库去访问静态库的时候,你的程序就会报错,而且版本管理麻烦。

然后我们就想到用cocoapods做依赖库,由于是公司的代码所以不能可能放到github上面去,所以就要求建立本地依赖库。

首先,我们要安装git和cocoapods

git安装和使用就看这篇文章  http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

cocoapods的使用安装就看这篇文章  http://code4app.com/article/cocoapods-install-usage

具体怎么搭建这个环境就不细说了。

接下来申请一个github的账号,找到页面右上角 New repository


创建完成我们用git clone 到本地


git clone https://github.com/codesourse/podtest.git

这里我们要用到LICENSE 和git的版本管理

CocoaPods强制要求所有的Pods依赖库都必须有license文件,否则验证不会通过。license的类型有很多种,详情可以参考网站tl;dr Legal。在创建github仓库的时候,我已经选择了MIT类型的license。

然后我们要在该目录下创建.podspec的文件

pod spec createpodtest

该文件为Pods依赖库的描述文件,每个Pods依赖库必须有且仅有那么一个描述文件。文件名称要和我们想创建的依赖库名称保持一致,我的podtest依赖库对应的文件名为podtest.podspec。

podspec的文件内容

[objc] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. Pod::Spec.new do |s|  
  2.   s.name             = "podtest"  
  3.   s.version          = "1.0.0"  
  4.   s.summary          = "A marquee view used on iOS."  
  5.   s.description      = <<-DESC  
  6.                        It is a marquee view used on iOS, which implement by Objective-C.  
  7.                        DESC  
  8.   s.homepage         = "https://github.com/wangzz/WZMarqueeView"  
  9.   # s.screenshots      = "www.example.com/screenshots_1", "www.example.com/screenshots_2"  
  10.   s.license          = 'MIT'  
  11.   s.author           = { "夏科杰" => "codesourse@gmail.com" }  
  12.   s.source           = { :git => '/Users/xiakejie/cocoapods/podtest', :tag => "1.0.0"}  
  13.   # s.social_media_url = 'https://twitter.com/NAME'  
  14.   s.platform     = :ios, '4.3'  
  15.   # s.ios.deployment_target = '5.1'  
  16.   # s.osx.deployment_target = '10.7'  
  17.   s.requires_arc = true  
  18.   s.source_files = 'podtest/**/*.{h,m}'  
  19.   # s.resources = 'Assets'  
  20.   # s.ios.exclude_files = 'Classes/osx'  
  21.   # s.osx.exclude_files = 'Classes/ios'  
  22.   # s.public_header_files = 'Classes/**/*.h'  
  23.   s.frameworks = 'Foundation''CoreGraphics''UIKit'  
  24. end  



自解析:

 name: 导入pod后的目录名 version: 当前版本号 deployment_target: 配置的target prefix_header_file: 预编译头文件路径,将该文件的内容插入到Pod的pch文件内 source: 来源的具体路径,是http链接还是本地路径 requires_arc: 是否需要arc source_files: 指定该目录下包含哪些文件 其他可选参数还包括: dependency: 指定依赖,如果依赖的库不存在或者依赖库的版本不符合要求将会报错 libraries: 指定导入的库,比如sqlite3 frameworks: 指定导入的framework weak_frameworks: 弱链接,比如说一个项目同时兼容iOS6和iOS7,但某一个framework只在iOS7上有,这时候如果用强链接,那么在iOS7上运行就会crash,使用weak_frameworks可以避免这种情况。

整个podspec语法是一个嵌套结构从Pod::Spec.new do |s|到最后一个end是最大的循环,表示整个podspec导入的文件。中间每一个subspec到end结束是一个子目录,Pods会为每个subspec创建一个逻辑目录,相当于Xcode的group概念。|**|中间是subspec的名字,可以随便命名,但后面使用的名称必须一致。

通配符说明

a{bb,bc}def.{h,m}表示四个文件abbdef.h abbdef.m abcdef.h abcdef.m

*.{h,m,mm}表示所有的.h .m .mm文件
Class/**/*.{h,m}表示Class目录下的所有.h .m文件


配置完这个我们需要用git 打个tag,然后cocoapods打个tag最后拷贝到pod本地库中


[objc] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. git tag 1.0.0  


[objc] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. git add -A && git commit -m "Release 1.0.0"  

[objc] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. set the new tag to 1.0.0  


[objc] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. pod lib lint  

然后在你要依赖的项目中放入podfile,内容是

pod 'podtest', :podspec => '/Users/xiakejie/cocoapods/podtest/podtest.podspec'

最后我们只需要简单一句pod install

如果这中间遇到

/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.35.0/lib/cocoapods/user_interface/error_report.rb:13:in `report': incompatible character encodings: UTF-8 and ASCII-8BIT (Encoding::CompatibilityError)
from /Library/Ruby/Gems/2.0.0/gems/cocoapods-0.35.0/lib/cocoapods/command.rb:58:in `report_error'
from /Library/Ruby/Gems/2.0.0/gems/claide-0.7.0/lib/claide/command.rb:300:in `handle_exception'
from /Library/Ruby/Gems/2.0.0/gems/claide-0.7.0/lib/claide/command.rb:274:in `rescue in run'
from /Library/Ruby/Gems/2.0.0/gems/claide-0.7.0/lib/claide/command.rb:264:in `run'
from /Library/Ruby/Gems/2.0.0/gems/cocoapods-0.35.0/lib/cocoapods/command.rb:45:in `run'
from /Library/Ruby/Gems/2.0.0/gems/cocoapods-0.35.0/bin/pod:43:in `<top (required)>'
from /usr/bin/pod:23:in `load'
from /usr/bin/pod:23:in `<main>'

那就看这篇文章吧

http://www.tuicool.com/articles/iaqU3im


我们的依赖项目就制作完成

参考 

http://blog.csdn.net/djl4104804/article/details/25408395

http://www.iwangke.me/2013/04/18/advanced-cocoapods/

http://guides.cocoapods.org/using/the-podfile.html

http://www.tuicool.com/articles/6FF7fi        

https://github.com/clarkda/cocoapods-repo-svn      (svn插件)

http://www.cocoachina.com/ios/20150123/11002.html  (gitlab 搭建自己的cocoapods 库)

0 0