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

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的文件

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

podspec的文件内容

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           = { "夏科杰" => "[email protected]" }

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本地库中

git tag 1.0.0
set the new tag to 1.0.0
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

时间: 2024-12-10 16:18:58

iOS本地项目依赖项(CocoaPods管理本地库)的相关文章

【解决方案中项目的生成顺序】由项目依赖项决定

项目依赖项: 通过“依赖项”选项卡可以确定活动解决方案中必须首先生成的项目. 项目生成顺序由谁决定: 项目生成顺序仅有依赖项决定.不在依赖项的范畴里的项目将不能决定它的生成顺序. 项目依赖项影响: 设置项目依赖项将斤规定项目所需的生成顺序.设置了A依赖于B,B会比A先生成. 至于如何依赖,由其他选项卡决定. 查看项目生成顺序: 可以右击解决方案->项目生成顺序,查看生成顺序.

windows开发平台下本地项目如何使用git管理

作为git使用的初级场景,用最简单的方法介绍一下这个优秀的版本控制工具,一般情况下是这样的: 本地有一个项目,比如名称是"hellopro",因为我们需要共享代码,合作开发,所以需要使用github或者其他服务器托管该git库. 这里只介绍Windows下最简单的操作,所以一些操作的提示信息可能看不到,进阶请使用bash. 1.init 进入项目文件夹,最简单方法:右键Git Init Here 操作完成后,右键菜单出现 Git Add all files now 等 2. add 这

iOS 本地项目上传github,github管理项目配置

一.注册github账号   首先需要注册一个github账号,注册地址:https://github.com 接着会来到这 然后会收到一封github发的邮件,进入邮箱验证 二.创建个人的github仓库  验证成功是这样的,然后点击创建仓库 也可以来到个人中心里创建仓库 创建完成好之后是这样子的.创建仓库的时候最好别用中文,不然你的仓库名就会显示 - 这样一条小横线. 三. 配置SSH keys 终端里输入显示隐藏文件:defaults write com.apple.finder Appl

vs2013中项目依赖项的作用

依赖项就是设定项目所以来的项目,以决定具体生成解决方案时,项目编译的顺序(一般一个解决方案会有很多项目组成). 通常来说,依赖项取决于这个项目引用的组件和项目,系统可以自己决定. 作用就是让系统知道你的项目a依赖于项目b,也就是说项目b会在a之前编译(因为依赖的关系,所以系统觉得应该先有b,这样才能有a). 总之就是用来控制编译顺序的. 我遇到的情况是:在编译caffe时,需要:生成依赖项->生成自定义->勾选CUDA7.5

什么是Maven? 使用Apache Maven构建和依赖项管理

通过优锐课java架构学习中,学到了不少干货,整理分享给大家学习. 开始使用最流行的Java构建和依赖管理工具Maven Apache Maven是Java开发的基石,也是Java使用最广泛的构建管理工具. Maven简化的基于XML的配置模型使开发人员能够快速描述或掌握任何基于Java的项目的轮廓,这使得启动和共享新项目变得很容易. Maven还支持测试驱动的开发,长期项目维护,其声明性配置和广泛的插件使其成为CI / CD的流行选择. 本文是对Apache Maven的快速介绍,包括Mave

使用CocoaPods管理第三方开源类库

iOS开发中经常会用到许多第三方类库,比如AFNetworking.FMDB.JSONKit等等,使用CocoaPods这个工具就能很方便得对工程中用到的类库进行管理,包括自动下载配置以及更新. 首先需要下载安装CocoaPods,系统要求有ruby环境,至少OS X 10.9以后是自带ruby环境的(Python也自带了),使用"ruby -v"命令可以查看当前ruby版本. 配置过程如下: 1.ruby环境 不放心的话可以先确认下ruby环境,据说由于GFW的影响,大都把Ruby镜

用CocoaPods做iOS程序的依赖管理(转载)

原文链接:http://blog.devtang.com/blog/2014/05/25/use-cocoapod-to-manage-ios-lib-dependency/ 用CocoaPods做iOS程序的依赖管理 MAY 25TH, 2014 文档更新说明 2012-12-02 v1.0 初稿 2014-01-08 v1.1 增加设置 ruby 淘宝源相关内容 2014-05-25 v2.0 增加国内 spec 镜像.使用私有 pod.podfile.lock.创建 spec 文件等内容

CocoaPods——用CocoaPods做iOS程序的依赖管理

文档更新说明 2012-12-02 v1.0 初稿 2014-01-08 v1.1 增加设置ruby淘宝源相关内容 2014-05-25 v2.0 增加国内spec镜像.使用私有pod.podfile.lock.创建spec文件等内容 CocoaPods简介 每种语言发展到一个阶段,就会出现相应的依赖管理工具,例如Java语言的Maven,nodejs的npm.随着iOS开发者的增多,业界也出现了为iOS程序提供依赖管理的工具,它的名字叫做:CocoaPods. CocoaPods项目的源码在G

CocoaPods :为iOS程序提供依赖管理的工具

http://www.devtang.com/blog/2014/05/25/use-cocoapod-to-manage-ios-lib-dependency/ http://blog.csdn.net/showhilllee/article/details/38398119 http://blog.csdn.net/xdrt81y/article/details/30631221 http://www.it165.net/os/html/201408/9155.html http://www