目录 html
1.核心组件 ios
1.1 CocoaPods / CocoaPod git
1.2 CocoaPods / Core github
1.3 CocoaPods / Xcodeproj xcode
2.安装和更新 ruby
3.Pod Commands app
4.Podfile ide
5..podspec Syntax 工具
6.支持第三方开发者将CustomSDK pod到本身的工程,如何作? 网站
7.制做支持安装第三方静态库podspec和podfile
8.制做支持subspec的podspec 文件
9.对CocoaPods文档查看的支持
10.清理pod install配置后的工程
11.CocoaPods实用网站
12. Pod install 开源库实战
这是面向用户的组件,每当你执行一个pod命令时,这个组件将被激活。它包括了全部实用CocoaPods的功能,而且还能调用其余gem包来执行任务。
Core gem提供了与CocoaPods相关的文件(主要是Podfile和podspecs)的处理。
Podfile用于配置项目所须要的第三方库。它能被高度定制,因此你能够尽量地给它添加你想要的特性。
.podspec文件描述了一个库将怎样被添加进工程中。.podspec文件能够标识该第三方库所须要的源码文件、依赖库、编译选项,以及其余第三方库须要的配置。
这个包负责工程文件直接关系的处理。它能建立以及修改.xcodeproj文件和.xcworkspace文件。它也能够做为一个独立的包使用,当你要编写修改项目文件的脚本时,能够考虑使用CocoaPods/Xcodeproj。
安装CocoaPods这个工具,须要用到gem(ruby的第三方库管理工具)。MacOS中默认支持gem,可是有时安装或更新cocoapods,须要更高版本的gem支持。
[sudo] gem update --system,升级gem。(用此命令可能仍然没法升级gem, 可尝试将gem包下载到本地(速度很快),细节https://rubygems.org/)
经验累积:
一、chmod 775 /usr/local,修改usr/local的访问权限,使[sudo] gem install cocoapods有权限安装。
二、operation not permitted - /usr/bin/xcodeproj,gem list能够查看到全部安装到本机的包,我电脑上的本地路径:/Library/Ruby/Gems/[version]/gems。查看目录下specifications目录,可能无xcodepro.gemspec文件,则从cocoapod的github上下载对应版本的文件。便可解决
三、operation not permitted - /usr/bin/pod, 使用此命令安装
sudo gem install -n /usr/local/bin cocoapods,即指定pod的路径。出现此问题,应该是gem的环境变量配置不正确。
关于安装旧版本:
sudo gem uninstall cocoapods
Password:
Select gem to uninstall:
1. cocoapods-0.34.4
2. cocoapods-0.35.0
3. All versions
删除新版本,天然便在旧版本了。若是以前未安装过指定的旧版本,则:
sudo gem install cocoapods -v 0.25.0
一、查看pod全部命令:pod help
二、查看具体命令用法: pod <command> —help, 例如:pod try —help
三、安装和配置第三方库: pod install. 若是想看到具体细节,pod install --verbose.一个很不错的link: http://blog.jobbole.com/53365/
四、检测并更新新版本库:pod update。能够经过pod outdated查看Pods中已过时的第三方开源库。pod install & pod update区别: 例如:Podfile中,pod ‘SVProgressHUD’,而未指定此开源库版本。pod install,若是SVProgressHUD已存在Pods中,则直接使用它。可是,pod update,会从新下载最新版本到Pods中。
五、产生`~/.cocoapods/repos`: pod setup. Cocoapods目录中保持了它支持的全部第三方开源库信息. 更新,sudo rm -fr ~/.cocoapods/repos/master, 再pod setup。也可使用git进行更新。
六、搜索第三方开源库: pod search <open source>, 在cocoapods这个目录中搜索。也能够在http://cocoapods.org中搜索第三方库。
具体能够查看: http://guides.cocoapods.org/syntax/podfile.html
1). pod ‘objection’’version’;
例如,pod ‘MCDateExtensions’,不指定版本,在pod update时会获取最新的版本;pod ‘MCDateExtensions’’~>1.0.0’,获取的版本信息是[1.0.0, 1.1.0). ~>是参照ruby的语法的,~>x.y.z, 的意思是版本号 x,y 固定,但能够大于等于 z。一般版本号的命名有其惯例:x major 版本号升级表示有 API 发生不向后的兼容性变更,y minor 版本号升级表示有功能新增,z tiny 版本号升级表示 bugs 修正。所以 “~> x.y.z” 可让我們保有升级弹性,又不致于升級太多让程序发生不兼容错误;
2). 从本地pod files, pod 'AFNetworking', :path => '~/Documents/AFNetworking'此目录下必定要有.podspec文档
3). 从git server端pod files
To use the master branch of the repo:
pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :branch => ‘develop’
Or specify a commit:
pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :commit => '082f8319af'
4)、 pod 'ShareKit/Facebook' 支持子模块的导入。
5)、Pod install依次作了什么?
步骤:
http://blog.jobbole.com/53365/
6)、较优的git仓库管理
将Podfile & Podfile.lock & workspace放到git仓库中管理
缘由:
Podfile.lock, 保证每一个team成员使用的第三方库是同一个版本的
Workspace, 若是由CocoaPods生成,则没有必要。若是workspace是本身建立的,就须要。
7)、注释
单行注释: #
多行注释:
=begin
codes to comment
=end
一、pod spec create ‘name’产生一个name.podspec文件,可仔细阅读此文件,熟悉.podspec语法;
二、pod spec lint ‘name’.podspec 用来build .podspec文件是否有错。
解决如下几个问题:
1). 在工程中建立一个.podspec文件,并让其编译经过;
编译.podspec文件使用命令,pod spec lint name. 官方文档: 这份文档:http://guides.cocoapods.org/making/making-a-cocoapod.html
2). 将自定义的.podspec归入Cocoa Spec管理;
a. 需github上一个account,并fork cocoa spec;
b. 将更改push到fork cocoa spec responsity上;
c. new pull request -> compare across forks;
3). 处理CustomSDK version update;重复2中的III.
1) 如何制做podspec文件参照OpenSSL:
https://github.com/krzyzanowskim/OpenSSL
2) 若是写Podfile以支持从本地导入OpenSSL:
例如:pod 'OpenSSL', :path => '../OpenSSL'(此为OpenSSL在本地的路径),从网上下载的包中,有一个快捷的OpenSSL.podspec文件和OpenSSL-Universal.podspec文件。删除快捷方式打开的OpenSSL.podspec文件,将OpenSSL-Universal.podspec文件重命名为OpenSSL.podspec,并将此文件中s.name = "OpenSSL-Universal"修改为s.name = "OpenSSL"。
虽然,从理论上能够用pod ‘OpenSSL’, :podspec => '../OpenSSL /OpenSSL-Universal.podspec'方式指定,可是实际操做却不成功,不知道为何。
参照例子ShareKit :
link: http://cocoadocs.org
如何将本身写的代码产生apple 风格的文档:
1. 安装Alcatraz和VVDocumenter-Xcode这两个xcode插件,
安装 Alcatraz,link: http://alcatraz.io
能够在此路径下找到:~/Library/Application Support/Developer/Shared/Xcode/Plug-ins. Relaunch Xcode and type in /// above any code you want to write a document to.
2. Download the link: https://github.com/tomaz/appledoc, 安装appledoc.
或者brew(unix tool)安装。安装方法:cd到appledoc的下载路径;sudo sh install-appledoc.sh; sudo sh install-appledoc.sh -b /usr/bin -t ~/Library/Application\ Support/appledoc.
3. 能够在终端上输入appledoc —help查看它的用法。Simple Example: appledoc ./NoticeBandSDK --project-name NoticeBandSDK --project-company "mophie-inc" --company-id com.mophie-inc.SDKDoc --output ./,会在当前目录产生一个txt,告诉你文档所在路径。Xcode中全部文档路径: ~/Library/Developer/Shared/Documentation/DocSets
删除Podfile.lock,workspace,Pods目录
一、打开要清理的工程,选择Build Phases, delete Manifest.lock & Copy pods Resources & Run script。
2.Framework&Header search path清理
选择工程,到Link Binary With Libraries,删除libPods.a和相似于libPods***.a的动态库
- pod 'LayerKit'
用pod这个工具导入源码,其实这个工具作的还不错,可是若是导入的工程是framework,则目前遇到的就各类出错了,好比这个LayerKit。因此,若是之后用到的是framework,仍是选择手动导入吧。
如何手动导入LayerKit这Framework?
1. 在与工程文件同级目录下,建立Framework这个目录,将LayerKit.Framework拷贝到此目录下;
2. 将这个目录添加进工程中;
3. 工程的Framework search path,须要将Framework这个目录路径添加进去;
4. 若是作到步骤3便结束,会报这样的错误
dyld: Library not loaded: @rpath/LayerKit.framework/LayerKit Reason: image not found
解决办法:in the target's General tab, there is an Embedded Binaries field, add framework there, and the crash is resolved.
可参照此连接: http://stackoverflow.com/questions/24333981/ios-app-with-framework-crashed-on-device-dyld-library-not-loaded-xcode-6-beta
运行程序时,会有以下打印:
LayerKit client v0.17.0 loaded
为了找到4步骤中的解决方案,真真是苦了臣妾了,差点彻底舍弃掉pod。不过幸亏pod作的事情比较多,因此把pod作好的事情,再手动作一篇,太麻烦了。所以,又回到了pod的阵营,只是之后导入framework,我是不打算用它了。