pod

第一次学习:

进入项目目录后,我们

1、touch Podfile

2、open Podfile 或者vim Podfile

3、三方文件,特别主要,要填写好项目名字

如下

platform :iOS,"8.1"

   target 'YYHAlertViewDemo' do //YYHAlertViewDemo是我写的demo名字,也是正常的项目名字

   pod ‘NIMSDK’

end

4、然后pod install


特别注意第一,第一次我们不能写pod update,如果我们这么处理,会出现如下问题:

1、pod couldnot load project

2、Couldn't load a xcode project because it is already opened from another project or workspace

等等问题。

导致我们去打开那个项目打不开。


如果走正常的路径,会提示成功。

[!] Please close any current Xcode sessions and use `xxxxx.xcworkspace` for this project from now on.
Sending stats
Pod installation complete! There is 1 dependency from the Podfile and 1 total pod installed.


特别注意:

1、pod install 还是update要在网络好的情况下进行,否则可能出现莫名的坑。

2、如果不想进行repo更新,可以添加如下参数,

pod install --verbose --no-repo-update(首次安装)

pod update --verbose --no-repo-update(更新)

特别注意install,verbose以及update后面都包含一个空格,不可缺少。

第二次学习:

互联网笔记:

1、因为Podfile.lock会锁定当前各依赖库的版本,之后如果多次执行pod install 不会更改版本

2、pod spec create nimdemo_spec_name

床架一个初始化的podspec文件

3、pod repo update master

更新本地三方库的描述文件

4pod search query列出所有可用的第三方库

5、所有的项目Podspec 文件都托管在https://github.com/CocoaPods/Specs

6、Type here to search by name ,version,author,keywords,summay,and dependencies

7、target 允许你在工程中限定依赖项只在你指定的targets中生效

8、>0.1 高于0.1的任何版本

9、>=0.1 版本0.1和任何更高版本

10、<0.1 低于0.1的任何版本

11<=0.1 版本0.1和任何较低的版本

12、你可以使用表示:head来指定版本,这意味着工程会使用指定spec下该pod的最新可以用版本,不过会强制下下载务必小心使用,因为spec可能导致不兼容。

pod ‘Objction’,:head

13、subspecs:当你用你一个名字装pod的时候,它将安装所有定义在podspec里面的默认的subspec

pod ‘QueryKit/Attribute’

也可以像一个集合

pod ‘QueryKit’,: subspes =>[‘Attribute’,’QuerySet’]

14、pod 'AFNetworking', :path => '~/Documents/AFNetworking'

使用这个选项后,Cocoapods 会将给定的文件夹认为是Pod的源,并且在工程中引用这些文件。

15、pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git'

pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :branch => 'dev'

有的时候,你可能想要使用一个最新的开发版本,或者某一个二次开发版本。如果是这样,你可以在pod声明中特别标明。

16、Pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :tag => '0.7.0'

使用仓库的某个tag

17、Pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :commit => '082f8319af'

还能指定一个提交记录

18target 

target块里面定义依赖项,如果对应的target不想添加依赖可以用:exclusive =>ture参数

Podfile 文件将会创建一个全局的target名叫:default

19、xcodeproj

指定包含引用pod库的target 的xcode工程会被链接到,如果没有任何一个target指定目标,那么就会使用和Podefile在同一目录下的project

20、inhibit_all_warning!

屏蔽所有来自于cocoaPods依赖库的警告。你可以全局定义,也能在子target里面定义,也可以指定某一个库。

21、定义一种abstract_target包含多个target

22abstract inherit

abstract! 指示当前的target是抽像的,因此不会直接链接Xcode target

inherit! 设置当前target的继承模式

参考文章:

你真的会写podfile吗

http://www.jianshu.com/p/8af475c4f717

Podfile语法参考
http://www.jianshu.com/p/8af475c4f717

Podfile 官方
https://guides.cocoapods.org/using/faq.html

云信更新遇到一个问题解决方案:

[!] The version of CocoaPods used to generate the lockfile (1.3.1) is higher than the version of the current executable (1.2.1). Incompatibility issues may arise.

[!] Unable to find host target(s) for NIMDemo-NIMKit. Please add the host targets for the embedded targets to the Podfile.

Certain kinds of targets require a host target. A host target is a "parent" target which embeds a "child" target. These are example types of targets that need a host target:

- Framework

- App Extension

- Watch OS 1 Extension

- Messages Extension (except when used with a Messages Application)

解决方法:sudo gem install -n /usr/local/bin cocoapods --pre

参考地方:

建立一个自己的pod 

http://www.jianshu.com/p/89605e02bf18

第三次学习

博文从01实现组件化架构

文章地址:https://www.jianshu.com/p/7b4667cde80b

1、podFile文件:指定主工程加载哪些组件库,里面描述好组件库对应的podspec文件在哪,就知道去哪加载组件代码。

2、cocoapods可以加载远程仓库也可以加载本地仓库,一般加载远程仓库

3、Podfile:指定podspec文件在哪,回到Podfile上一级目录,进入HttpManager就能找到。

4、../HttpManager:回到Podfile上一级目录,进入HttpManager就能找到。

5、本地仓库代码搞一个podspec文件描述去哪加载组件代码。

6、谁需要引入本地仓库代码,就创建Podfile

7、以上的代码仓库都在本地,没有远程管理,也就意味着只能自己使用,别人不能使用,如果想把自己的代码仓库开源,让所有的开发人员都可以弄,应该怎么做?

8、给自己代码仓库,创建podspec,其实本质是把自己代码仓库的podspec索引文件上传上去就好了,可以直接使用pod lib create命令

9、podspec文件注意点:s.source_files仅仅描述组件代码就好,不要描述整个工程名文件,会把所有文件集成上去,错误写法:s.source_files = "HttpManager"

10**:表示所有文件:因为*表示通配符,可有可无.

11s.source_files = "HttpManager/Classes/**/*.{h,m}",表示组件代码在podspec目录下HttpManager/Classes中的所有文件,默认会自动追踪到到podspec文件的目录路径下,因为当前处于podspec文件中,处于哪个文件,就自动追踪哪个文件。

12谁需要引入本地仓库代码,就创建Podfile

13、创建组件工程

(1)直接创建工程,把组件代码放在Class中,只要spec描述好,就会自动加载Class中组件代码,生成spec描述文件,指定加载组件工程的组件代码在哪。

(2)使用cocoapods命令:pod lib create组件代码名称

14、还会生成podspec,描述好组件代码在哪就好.

15、需要把自己的组件代码放在Class中对应文件,还不够,发现根本没法引入组件代码.h文件.

16、需要重新pod install,因为不重新pod install,Example工程根本不知道Pod更新了,pod install的作用:重新让pod库与所依赖的工程文件产生关联。

17我们之前安装cocoapods时,有一步骤pod setup,这一步其实就是去下载cocoapods中公共的所有代码仓库索引,保存到本地

18、 通过pod repo 指令就能查看cocoapods的索引库

19、注册trunk,不是任何人都能推送,因为cocoapods依赖trunk服务器管理,所以需要通过trunk推送自己的podspec

20命令:pod trunk register EMAIL [NAME]

21pod trunk register 58999050@qq.com yuanzheng

22、用pod init 能代替vim Podfile

23、重要命令:

(1)pod init (pod初始化) 

(2)pod spec create spec 文件名  (创建组件工程)

(3)pod lib create 组件代码名称

(4)pod trunk register EMAIL [NAME]注册trunk

(5)pod trunk push ****.podspec —allow-warnings推送自己的podspec到cocoapods的索引库

第四次学习:

1pod update 

听云已经出现最新版2.9

但是我通过pod update --verbose --no-repo-update这个不能更新,但是通过pod update却能

为什么呢:因为pod update --verbose --no-repo-update只是在本地更新,只有pod update才更新线上的,pod update 有个缺点就是慢,优点就是更新完全,因此在网络好的时候,我们应用pod update

2、如果我么写了固定的版本号,即使更新我们也会发现最新的不会下来,我们在pod库里面做的修改仍在。

3、pod update :

-bash: /usr/local/bin/pod: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby:bad interpreter: No such file or directory

sudo gem install -n /usr/local/bin cocoapods 

解决问题


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值