您的位置:首页 > 移动开发 > IOS开发

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

2016-03-21 14:13 776 查看
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[/code] 
这里我们要用到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







Pod::Spec.new do |s|

s.name = "podtest"

s.version = "1.0.0"

s.summary = "A marquee view used on iOS."

s.description = <<-DESC

It is a marquee view used on iOS, which implement by Objective-C.

DESC

s.homepage = "https://github.com/wangzz/WZMarqueeView"

# s.screenshots = "www.example.com/screenshots_1", "www.example.com/screenshots_2"

s.license = 'MIT'

s.author = { "夏科杰" => "codesourse@gmail.com" }

s.source = { :git => '/Users/xiakejie/cocoapods/podtest', :tag => "1.0.0"}

# s.social_media_url = 'https://twitter.com/NAME'

s.platform = :ios, '4.3'

# s.ios.deployment_target = '5.1'

# s.osx.deployment_target = '10.7'

s.requires_arc = true

s.source_files = 'podtest/**/*.{h,m}'

# s.resources = 'Assets'

# s.ios.exclude_files = 'Classes/osx'

# s.osx.exclude_files = 'Classes/ios'

# s.public_header_files = 'Classes/**/*.h'

s.frameworks = 'Foundation', 'CoreGraphics', 'UIKit'

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







git tag 1.0.0

[objc] view
plain copy







git add -A && git commit -m "Release 1.0.0"

[objc] view
plain copy







set the new tag to 1.0.0

[objc] view
plain copy







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
我们的依赖项目就制作完成

参考

/article/7707251.html

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 库)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: