那么只需要以下几个步骤,必威:3 填写仓库信息

于今有成都百货上千工程都以用Cocoapods管理了,假设你想把温馨的库托管给CocoaPods,那么只供给以下多少个步骤:

智人能在无情的升华东军大战中现存下来,原因之一正是智人明白将知识沉淀成外物,支持相互之间的通力同盟,进而使得整个群落产生了规模效应,即1+1>2的意义。从贰个角度上说,石器时期是根据石器的组件化的时代,因为老张家的石矛借给了老王,同样能够拿去狩猎。要想完成这些目标,必须要保管:

前言


一、成立的github旅舍原来的书文地址

1.实施命令pod lib create XXLib

在此时期需求认可下边多少个难点。

What language do you want to use?? [ Swift / ObjC ]ObjcWould you like to provide a demo application with your library? [ Yes / No ]yesWhich testing frameworks will you use? [ Specta / Kiwi / None ]NoneWould you like to do view based testing? [ Yes / No ]NoWhat is your class prefix?BZWhat is your class prefix?XXD

推行完事后,踏向XXLib文件夹,目录结构如下

XXLib工程的目录结构--Example// 例子目录-----Podfile-----Tests-----XXLib-----XXLib.xcodeproj--LICENSE--README.md--XXLib // XXLib文件夹是库文件夹,在那之中Assets寄放能源文件,Classes存放代码文件。-----Assets-----Classees--XXLib.podspec--_Pods.xcodeproj -> Example/Pods/Pods.xcodeproj

source能够选定tag也许branch。frameworkslibraries点名重视的SDK中的framework和类库,内需潜心,重视项不止要含有你协和类库的依赖,还要富含具有第三方类库的注重,唯有这么当你的类库打包成.a或.framework时能力让别的品类符合规律使用。

## Be sure to run `pod lib lint XXLib.podspec' to ensure this is a# valid spec before submitting.## Any lines starting with a # are optional, but their use is encouraged# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html#Pod::Spec.new do |s| s.name = 'XXLib' s.version = '0.1.0' s.summary = 'A short description of XXLib.'# This description is used to generate tags and improve search results.# * Think: What does it do? Why did you write it? What is the focus?# * Try to keep it short, snappy and to the point.# * Write the description between the DESC delimiters below.# * Finally, don't worry about the indent, CocoaPods strips it! s.description = <<-DESCTODO: Add long description of the pod here. DESC s.homepage = 'https://github.com/<GITHUB_USERNAME>/XXLib' # s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2' s.license = { :type => 'MIT', :file => 'LICENSE' } s.author = { 'zhiyu.zhao' => 'zhiyu.zhao@XXX.com' } s.source = { :git => 'https://github.com/<GITHUB_USERNAME>/XXLib.git', :tag => s.version.to_s } # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>' s.ios.deployment_target = '8.0' s.source_files = 'XXLib/Classes/**/*' # s.resource_bundles = { # 'XXLib' => ['XXLib/Assets/*.png'] # } # s.public_header_files = 'Pod/Classes/**/*.h' # s.frameworks = 'UIKit', 'MapKit' # s.dependency 'AFNetworking', '~> 2.3'end
  1. 石矛丰富锋利。不然冒然拿着石矛去找野兽就形成了给野兽送夜宵。
  2. 石矛轻易采纳。借使是石矛相当的重依然难以抓起,也很难令人采取。

1.什么是CocoaPods

当你付出iOS应用时,会临时利用到很多第三方开源类库,比如JSONKit,AFNetWorking等等。恐怕有个别类库又用到其余类库,所以要利用它,必得得别的下载其余类库,而别的类库又用到别的类库,“子子孙孙无穷尽也”,这大概是相比较特殊的情事。由此可见小编的意味便是,手动一个个去下载所需类库十二分难为。其余一种常见景观是,你项目中用到的类库有更新,你无法不得重复下载新本子,重新加入到花色中,十一分烦劳。假若能有何工具能一蹴而就那几个恼人的主题素材,那将“善莫斯中国科学技术大学学焉”。所以,你须要CocoaPods。

CocoaPods应该是iOS最常用最资深的类库管理工科具了,上述多个该死的难题,通过cocoaPods,只须求一行命令就足以完全缓和,当然前提是你必得正确安装它。首要的是,绝当先四分之二显赫的开源类库,都援助CocoaPods。所以,作为iOS技师的我们,驾驭CocoaPods的运用是务必的基本能力了。

1、注册CocoaPods账户消息

想要创制一个开源pod库, 首先大家要求登记CocoaPods, 这里运用trunk格局, 作为贰个iOS开垦人士你早晚安装了CocoaPods, 那么只要求在极限施行:

pod trunk register 邮箱地址 '用户名' --verbose

此处我们一般选拔github邮箱和顾客名, 然后在你的信箱中会收到确认邮件, 在浏览器中式茶食击链接确认即注册成功, 成功今后可以终端执行:

pod trunk me

查阅本身的登记新闻, 未来当您有了友好的开源Pod库, 也足以用此措施随时查阅自个儿发表过的Pods;

1 步入Github网站www.github.com登入自身的账号后

3.检查podSpec

自己商酌命令比相当粗略

pod spec lint

它会检讨当前文件夹下的保有podSpec文件可是当自家利用命令时境遇几个小标题,这里说一下。前提条件:此前学习iOS10新特色,安装了XCode8 beta版,XCode7也没卸载掉,所以Computer里有俩XCode。

当笔者第一遍检查podSpec报错

  • ERROR | [iOS] unknown: Encountered an unknown error (Must be in the root of the repo (/Users/zhiyu.zhao/.cocoapods/repos/master), instead in /Users/zhiyu.zhao/Desktop/XXLib.) during validation.

说作者的repo root不对,CocoaPods的Issue里找了找还真有人和蒙受自个儿一样的主题素材链接,通过制定XCode应用路线消除难题sudo xcode-select -s /Applications/Xcode.app

第三次运营时,依旧报错

  • ERROR | [iOS] unknown: Encountered an unknown error (Simulator iPhone 4s is not available.) during validation.

凑巧也会有人境遇本身的标题链接

运行xcrun simctl list查看我的设备列表== Device Types ==iPhone 4s (com.apple.CoreSimulator.SimDeviceType.iPhone-4s)iPhone 5 (com.apple.CoreSimulator.SimDeviceType.iPhone-5)iPhone 5s (com.apple.CoreSimulator.SimDeviceType.iPhone-5s)iPhone 6 (com.apple.CoreSimulator.SimDeviceType.iPhone-6)iPhone 6 Plus (com.apple.CoreSimulator.SimDeviceType.iPhone-6-Plus)iPhone 6s (com.apple.CoreSimulator.SimDeviceType.iPhone-6s)iPhone 6s Plus (com.apple.CoreSimulator.SimDeviceType.iPhone-6s-Plus)iPad 2 (com.apple.CoreSimulator.SimDeviceType.iPad-2)iPad Retina (com.apple.CoreSimulator.SimDeviceType.iPad-Retina)iPad Air (com.apple.CoreSimulator.SimDeviceType.iPad-Air)iPad Air 2 (com.apple.CoreSimulator.SimDeviceType.iPad-Air-2)iPad Pro (com.apple.CoreSimulator.SimDeviceType.iPad-Pro)Apple TV 1080p (com.apple.CoreSimulator.SimDeviceType.Apple-TV-1080p)Apple Watch - 38mm (com.apple.CoreSimulator.SimDeviceType.Apple-Watch-38mm)Apple Watch - 42mm (com.apple.CoreSimulator.SimDeviceType.Apple-Watch-42mm)== Runtimes ==iOS 9.1 (9.1 - 13B137) (com.apple.CoreSimulator.SimRuntime.iOS-9-1)tvOS 9.0 (9.0 - 13T393) (com.apple.CoreSimulator.SimRuntime.tvOS-9-0)watchOS 2.0 (2.0 - 13S343) (com.apple.CoreSimulator.SimRuntime.watchOS-2-0)== Devices ==// 因为有俩XCode,其中老版本7.1的模拟器都丢了,自己新建的模拟器-- iOS 9.1 -- xocde7_4s (7CFCFB3D-B8E0-4F9B-B328-AC4AC0937CDB)  xode7_5s (F832F80F-2E63-431A-9692-AB67C6D7D462)  xcode7_6p (D89AEE31-191C-448C-95A1-6FFA0989BD55)  xcode7_6s (7C8D4F6E-BA5C-4C39-8511-5CD8CD4F5554) 

每户说了,这是规行矩步系统暗中认可命名(索爱4s)来的寻觅的,笔者改过二次当然就找不到相应模拟器了。几番祸患之后,终于过了检查

必威 1image.png

2.CocoaPods的原理

CocoaPods的规律是将装有的依靠库都放到另贰个名称叫Pods的品类中,然后让主项目依赖Pods项目,这样,源码处管事人业都从主项目移到了Pods项目中。Pods项目最终会编写翻译成三个名称叫libPods.a的公文,主项目只要求借助那些.a文件就能够。

2、创造共享库文件并上传来公有仓库

分享库须要多少个必要的局地:

  • 共享文件夹(文件夹存放着你要分享的剧情, 也正是其余人pod获得的公文, .podspec文件中的source_files须求钦命此文件路线及文件类型);
  • LICENSE文件(私下认可一般选用MIT);
  • 库描述文件.podspec(本库的各种消息描述, 须求提交给CocoaPods, pod通过那个文件查找到你分享的库).

这一步分二种情景:

  • 一旦你已经有了现有的想要共享的文件,你只供给满意上面八个部分,就能够上传播公有宾馆就能够继续其余的步子;
  • 您想要成立一个崭新的工程去做自身的分享, 参谋Using Pod Lib Create

2 塑造多少个新的库房

4.地面调节和测量试验

Example文件夹下Podfile私下认可引入了XXLib,使用了path钦定了路径,此处是为地点上级目录。这么写时,无需借助~/.cocoa/repo下的podspec,直接能pod update,何况XXLib的源码会在Example的pod工程下多个名称为Development的group下。间接在XCode中就能够修改Classes文件夹中内容。

example的Podfileuse_frameworks!target 'XXLib_Example' do pod 'XXLib', :path => '../' target 'XXLib_Tests' do inherit! :search_paths pod 'FBSnapshotTestCase' endend

八个步骤就完事了多个完好无缺的pod架子,把自个儿的代码到场进去后,剩下的正是向远程提交了

库建好了,也交由了,不过是开源的。总有那些东西不能够给别人看,如何是好,打成静态链接库呗。

一种观点以为,新闻时期是依据软件营造起来的,由程序员不断进献智慧和体力,进而发出价值的一世。产品必要就象是前文聊起的猎物,达成必要类似于成功捕杀猎物,而产品逾期就好比被猎物吃掉。由此在那一个时代,也急需一些方可好用且易于接纳的机能代码段,方便技师拿来急忙完毕必要,就好比公元元年此前时期的可以复用的石矛。制作这种效果与利益代码段的经过叫做组件化,这种艺术带来的出现叫做组件,俗称轮子。

3.CocoaPods设置和选择能够参照他事他说加以考察上边链接

a、推行终端命令:
pod lib create 库名

必威 2

手动创制.a流程

英特网海人民广播广播台湾大学素材能够查询,是三个力气活儿1.新建多个工程,类型选static library2.将索要打包的源文件拖入3.配备静态库target的build phases将全部.m文件拖入到Compile Sources中。因为笔者的这些库中是OC和C++混编的,所以还索要参预.mm、.hpp、.cpp等体系文件。4.暴光头文件新建二个标签Headers Phase,将想要暴透露来的头文件放到里面。英特网也是有说将想揭示的头文件放到Copy Files下的,能够都放,未有测量检验过。5.联合模拟器&真机架构下的静态库新建三个Aggregate类型的target,在Build Phases中新建Run Scropt写上统一的操作,一般.a在工程的products文件夹下能够找到。

具体路径~/Developer/XCode/DerivedData/xxxxxxx/Build/Products/Debug-iphoneos(iphonesimulator)

指令很简短

 lipo -create 静态库1.a 静态库2.a -output 新静态库.a 

6.加多能源文件假如有用到能源文件,必要将她们放手一个bundle里能够和睦新建bundle类型target,也足以修改文件夹后缀成.bundle实现。在静态库target的Build Phases页下的Target Dependencies和Copy Bundle Resources标签中加上你的bundle就足以了。7.编写podspec文件xxxxx

从精神上说,组件是通过库的艺术来开展打包进而提供给开垦者使用。而库,便是一种集体贰个或七个文本的格局。在 iOS 8 此前,iOS 只协助以静态库的方法来使用第三方的代码。

4.framework制作

4.1成立三个workspace项目:

①在桌面创造文件夹ZCBLSDK

②开发Xcode,创立二个workspace,Xcode--->File--->New--->Workspace

③把创设好的workspace放在桌面上文件夹ZCBLSDK中

4.2开立八个project项目:

①打开ZCBLSDK.workspace文件,Xcode--->File--->New--->Project--->iOS--->Cocoa Touch Framework--->Next--->Product Name (ZCBLSDK)--->Next---Add to和Group 选择ZCBLSDK--->Create

4.3成立三个测量试验德姆o项目:

①打开ZCBLSDK.workspace文件,Xcode--->File--->New--->Project--->iOS--->Single View Application--->Next--->Product Name (ZCBLSDKDemo)--->Next---Add to和Group 选择ZCBLSDK--->Create

4.4开立贰个测量试验类:

①在ZCBLSDK.project下创办贰个ZCBLSDKTest类,传承于NSObject,打印一条日志新闻,在ZCBLSDKTest的.h文件中声明一(Karicare)个措施+(void)test;在ZCBLSDKTest的.m文件中贯彻+(void)test{NSLog(@"Hello Wold !!!");}

②设置Build Setting参数,将Build Active Architecture only设置为NO

③基于SDK供给帮助的ARM管理器配置Architecture

④设置Headers,将在公开的头文件拖到Public下,要藏匿的放权Private或然Project下,遮蔽的头文件不能被引用,选取ZCBLSDK--->Build Phases--->Headers

⑤在ZCBLSDK.h少将全数要公开的.h引进#import<ZCBLSDK/ZCBLSDKTest.h>

4.5导出.framwork文件:这里提供二种导出形式,一种手动导出,一种脚本导出

①手动导出:选拔ZCBLSDK.project--->艾德it Scheme--->Run--->Build Configuration--->Release--->然后分别用真机和模拟器举行编写翻译,编写翻译成功后选取Products下面包车型地铁ZCBLSDK.framework然后右键Show in Finder,拷贝Release-iphoneos和Release-iphonesimulator文件下位于桌面新建文件夹ZCBLFramework(自身取名)文件下,然后展开终端命令合并库文件:cd ZCBLFramework上边,实行lipo -create Release-iphoneos/ZCBLSDK.framework/ZCBLSDK Release-iphonesimulator/ZCBLSDK.framework/ZCBLSDK -output ZCBLSDK,查看framework支持的架构:lipo -info ZCBLSDK

补充:

arm7: 在最老的协助iOS7的配备上运用

arm7s: 在iPhone5和5C上使用

arm64: 运行于iPhone5S的64位 ARM 处理器 上

i386: 32人模拟器上使用

x86_64: 64为模拟器上利用

专心: 高位包容地位(34个人包容16位),arm7版本能够在arm7s上运维

内需在对应架构划设想备上运营,本领生成对应架构的包

②脚本导出:创建三个Aggregare,Xcode--->艾德itor--->Add Target--->Cross-platform--->Aggregate--->Next--->Product Name(ZCBLSDKAG)--->finish--->嵌入脚本,选中刚制造的Aggregate,然后选中左侧的Build Phases,点击侧边的+号,采取New Run Script Phases,把上面包车型大巴剧本复制进去:

# Sets the target folders and the final framework product.

#如果工程名称和Framework的Target名称不雷同的话,要自定义FMKNAME

#例如: FMK_NAME ="MyFramework"

FMK_NAME=${PROJECT_NAME}

# Install dir will be the final output to the framework.

# The following line create it in the root

folder of the current project.

INSTALL_DIR=${SRCROOT}/Products/${FMK_NAME}.framework

# Working dir will be deleted after the framework creation.

WRK_DIR=build

DEVICE_DIR=${WRK_DIR}/Release-iphoneos/${FMK_NAME}.framework

SIMULATOR_DIR=${WRK_DIR}/Release-iphonesimulator/${FMK_NAME}.framework

# -configuration ${CONFIGURATION}

# Clean and Building both architectures.

xcodebuild -configuration"Release"-target"${FMK_NAME}"-sdk iphoneos clean build

xcodebuild -configuration"Release"-target"${FMK_NAME}"-sdk iphonesimulator clean build

# Cleaning the oldest.

if[ -d"${INSTALL_DIR}"]

then

rm -rf"${INSTALL_DIR}"

fi

mkdir -p"${INSTALL_DIR}"

cp -R"${DEVICE_DIR}/""${INSTALL_DIR}/"

# Uses the Lipo Tool to merge both binary files (i386 + armv6/armv7) into one Universal final product.

lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" - output"${INSTALL_DIR}/${FMK_NAME}"

rm -r"${WRK_DIR}"

open"${INSTALL_DIR}"

③编写翻译,选中刚创制的Aggregare,command+B,编写翻译通过在finder中找到framework,拷贝出来。

④测量试验framework,把刚生成的framework增多到ZCBLSDK德姆o中,导入头文件#import<ZCBLSDK/ZCBLSDK.h>,使用[ZCBLSDKTest test],发现调整台打字与印刷Hello Wold !!!表达framework和ZCBLSDK德姆o关联成功,修改framework中ZCBLSDKTest类中test的代码,+(void)test{NSLog(@"Hello Framework !!!");},再度运营开采调节台打字与印刷Hello Framework !!!,那时候表明framework已经制作成功。

b、CocoaPods将及时展开你的Xcode项目; 从这里能够编写CocoaPods生成的具备文件。

创办新的仓库

使用cocopods-packager打包库

后面谈起了手动创立时索要新建一个static library的target,这里介绍cocoapods-packager插件,它帮忙直接行职务令,注重项目标podspec文件进行打包。

设置格局异常的粗略

$ gem install cocoapods-packager

打包命令也很简短

$ pod package XXLib.podspec --library --force

--library钦赐打包成.a文件,假设不带中将会打包成.framework文件。--force是指强制覆盖已存在的文件夹。

亟需极其重申的是,该插件通过对引用的三方库开展重命名很好的化解了类库命名争持的难点。

改动文件目录结构如下:

XXLib-0.1.0--build--ios----libXXLib.a--XXLib.podspec

坑:此插件对--library的支撑不是很好,打包出来唯有.a,未有头文件和财富文件同有的时候间转移的podspec文件恐怕framework的。对于那个bug,小编很欢畅的分明了,并表示--library用得少,我不焦急改

之所以咱们依然使用它的framework格式的库吧命令也相当粗略

$ pod package XXLib.podspec --force

xxxxx

1.假设iphone进级新iOS系统了,但是Xcode未有升高,那时候会报

[Could not find Developer Disk Image]

错误,如下图

必威 3Could not find Developer Disk Image

减轻方式,找到多个新式版的XCode,把以下路子的iOS Support文件夹拷贝到老版本的XCode相应地方,既可/Applications/Xcode-beta.app/Contents/Developer/Platforms/魅族OS.platform/DeviceSupport参谋:栈爆网

2.有多个本子的XCode,老版本的模拟器打不开如何做。施工方案:张开 Xcode -> Developer Tool -> iOS simulator (即时模拟器运维不了,Simulator.app也会运转).在Simulator应用中,找到 Hardware -> Device -> Manage Devices.然后在中间点加号增加想要的模拟器

参考:栈爆网

静态库

静态库,在iOS中会被打包成.a文件,合作.h头文件一同能够完结效用的调用。但是在在概念上,静态库是一种All In One的宏图思路,因为依附静态库的代码会把静态库完全链接到App的可实践文件中。也正是说,静态库是在编写翻译器被链接到App中的,由此假若多个App都引用了同几个静态库,则各样App都会把那个静态库链接一份,这实在浪费了内部存款和储蓄器。当然,静态库的弱项不独有于此。在采取静态库时,必得手动多少个个链接它借助的外表库,比如开始的一段时期微信支付SDK的静态库接入格局中,须求求手动链接上:

SystemConfiguration.framework, libz.dylib, libsqlite3.0.dylib, libc++.dylib,Security.framework, CoreTelephony.framework,CFNetwork.framework

有未有一种要求轮流背诵蒸羊羔、蒸熊掌、蒸鹿尾儿、烧花鸭、烧雏鸡、烧子鹅、卤猪。。。的即视现象。并且,静态库的特点导致了App每一回运转时都要再度加载静态库的内部存储器,不能调整加载时机,并且每一次运维都亟需再行加载静态库,导致一回加载时间不可能被优化。抢先四分之一时候,还索要在Other Linker Flags里填入Objc -all_load来担保静态库正常工作。可以吗,听上去静态库很难用。我们都知晓,前期iOS协理了动态库。那动态库是或不是就能够健全化解难题了啊?

5.发布framework到CocoaPods

c、打开*.podspec文件,修改类库配置音讯。
#
# Be sure to run `pod lib lint BLPopHandlerController.podspec' to ensure this is a
# valid spec before submitting.
#
# Any lines starting with a # are optional, but their use is encouraged
# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html
#

Pod::Spec.new do |s|
  s.name             = 'BLPopHandlerController'
  s.version          = '0.1.0'
  s.summary          = 'A short description of BLPopHandlerController.'

# This description is used to generate tags and improve search results.
#   * Think: What does it do? Why did you write it? What is the focus?
#   * Try to keep it short, snappy and to the point.
#   * Write the description between the DESC delimiters below.
#   * Finally, don't worry about the indent, CocoaPods strips it!

  s.description      = <<-DESC
TODO: Add long description of the pod here.
                       DESC

  s.homepage         = 'https://github.com/upupSue/BLPopHandlerController'
  # s.screenshots     = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
  s.license          = { :type => 'MIT', :file => 'LICENSE' }
  s.author           = { 'upupSue' => '594821076@qq.com' }
  s.source           = { :git => 'https://github.com/upupSue/BLPopHandlerController.git', :tag => s.version.to_s }
  # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'

  s.ios.deployment_target = '8.0'

  s.source_files = 'BLPopHandlerController/Classes/**/*'

  # s.resource_bundles = {
  #   'BLPopHandlerController' => ['BLPopHandlerController/Assets/*.png']
  # }

  # s.public_header_files = 'Pod/Classes/BLPopHandler/BLPopHandlerController.h'
  # s.frameworks = 'UIKit','Foundation'
end

依据默认配置,类库的源文件将身处Pod/Classes文件夹下,能源文件位于Pod/Assets文件夹下,能够修改s.source_filess.resource_bundles来改变贮存目录。s.public_header_files用来钦命头文件的搜求地点。
s.frameworkss.libraries点名依赖的SDK中的framework和类库,需求注意,重视项不仅仅要含有你本身类库的依附,还要富含富有第三方类库的正视。
podspec文件的详尽表达能够看Podspec Syntax Reference。

3 填写饭店音信

动态库

动态库,超过一半会被打包成.tbd文件大概.dylib文件。不相同于静态库在编写翻译期链接到App,动态库是在运行时链接到App的,因而它有了多个好处:

  • 按需加载,曾几何时供给周转几时加载,进步了开发银行app的频率
  • 因为存在多少个app使用同三个动态库的气象,由此一旦某些动态库被加载到内部存款和储蓄器中,下二个app使用时无需另行花费内部存款和储蓄器加载此动态库,我们公用多少个动态库。
  • 因为动态库不必要参加编写翻译进度,因而不会生出链接时符号争辩的难点。

可是,苹果对动态库的完全扶助仅停留在系统的动态库上,比如UI.framework,对于第三方的动态库,照旧要求embed到系统中。开始的一段时期的有的热更新框架,比方JSPatch钻了纰漏通过dlopen来开展热更新,可是非常的慢被禁掉了。但是,假设是百货店证书,依旧得以在协和的app里灵活的加载第三方动态库的。

5.1创制GitHub客栈并上传framework到GitHub旅馆

5.1.1打开

5.1.2登入实现之后点击Start a project,然后遵照本身的骨子里景况布署项目。

5.1.3创变成功后clone远程仓库到本地:

①cd Documents  你愿意存放的地方 

②施行git clone  酒馆地址

③然后将刚刚生成的ZCBLSDK.framework放在贰个命名称为Frameworks的文本夹中,然后将Frameworks文件夹放在clone下来的公文夹中。

5.1.4提交到GitHub:

①git add --all

②git commit -m'init framework'

③git push

5.1.5设置Tag:

①git tag -1.0.0

②git push origin --tags

d、走入Example文件夹,实施pod install,让demo项目设置信赖项并创新配备。

必威 4

Framework

在演讲静态库和动态库的经过中,笔者并不曾提framework的单词。有个别开荒者以为framework文件就是动态库,其实并不正确。大家关系的framework,指的是.framework文件,那既不自然是静态库,也不自然是动态库。实际上那是一种包装格局,将Header、Binary和bundle一齐装进,方便开荒者举行对接和调用。因而framework到底是静态库照旧动态库,取决于Binary文件到底是静态库还是动态库。

5.2创建Trunk账户

5.2.1注册Trunk账户:

①pod trunkregister邮箱地址 ‘客商名’ –verbose,注册命令实施完事后,对应的邮箱地址会吸收接纳一封邮件,去邮箱确认登记。

5.2.2查看自个儿的登记消息:

①pod trunk me

e、增添代码,重国民党的新生活运动行Pod install来行使创新,demo中调用测量试验。

Development Pods are different from normal CocoaPods in that they are symlinked files, so making edits to them will change the original files, so you can work on your library from inside Xcode. Your demo & tests will need to include references to headers using the #import <MyLib/XYZ.h> format.

填写仓库新闻

痛点

“老一辈”的iOS开荒都会记得手动引进静态库时,那无边无际的编写翻译错误。笔者总结计算一下,如若手动引入静态库,须求:

  • 将静态库和头文件引进工程
  • 增添各依赖库(不一致版本下大概况有差异)
  • 修改Other_linker_flags,例如设置-ObjC,-fno-objc-arc等参数
  • 祈祷
  • 编写翻译,假若出标题,从第一步举办检查
  • 即便没有时常,未来要手动处理立异

技士的创立力很多时候来源于“懒”,终于,CocoaPods拔地而起,从此开启了一行命令行完毕模块集成的一时!

CocoaPods是iOS平台当前最流行的包管理工科具,可以将它知道为二个能够活动安顿到花色的组件池,而相应的podfile文件就一定于伏乞组件的Request。当组件下载到工程后,cocoaPods会自动完毕组件集成到现成项目标行事,并实现修改.xcodeproj文件和成立.xcworkspace文件。最终将装有组件统一打包成Pods.framework静态库,供项目选择。

在CocoaPods中,会设有以下二种文件:

  • podspecPod的叙说文件,一般的话表征你的类型地址,项目选用的阳台和版本等新闻
  • podfile顾客编写的对于期望加载的pod以及对应Target音讯
  • podfile.lock记录了事先pod加载时的有个别音讯,包含版本、依赖、CocoaPods版本等
  • mainfest.lock记录了本土pod的骨干消息,实际上是podfile.lock的正片大多数开拓者最熟练的cocoaPods指令正是pod install,那现实在试行pod install时发出了怎么样啊?

当大家运维pod install时,会发生:

  • 分析Dependency。比较当地pod的version和podfile.lock中的pod version,借使分歧会提醒存在高风险
  • 对待podfile是不是产生了变通。若是存在难点,会扭转多个列表,三个是急需Add的Pod,贰个是内需Remove的Pod。
  • (倘诺存在remove的)删除必要Remove的Pods
  • 增多要求的Pod。此时,若是是符合规律的CocoaPods库,会先去:
    • Spec下寻觅对应的Pod文件夹
    • 找到呼应的tag
    • 定位其Podspec文件
    • git clone下来对应的文书(依据现实磋商的例外,这里还恐怕存在以下二种模式的download:Bazaar、Mercurial、HTTP、SCP、SVN)
    • copy到Pod文件夹中
    • 运行pre-Install hook
  • 生成Pod Project
    • 将该Pod中对应文件增加到工程中
    • 累加对应的framework、.a库、bundle等
    • 链接头文件(link headers),生成Target
    • 运行 post-install hook
  • 退换podfile.lock,之后生成此文件的别本,将其内置Pod文件夹内,命名叫manifest.lock(若是出现 The sandbox is not sync with the podfile.lock这种张冠李戴,则代表manifest.lock和podfile.lock文件不雷同),此时貌似必要重国民党的新生活运动行pod install命令。
  • 安排原有的project文件(add build phase)
    • 添加了 Embed Pods Frameworks
    • 添加了 Copy Pod Resources

里面,pre-install hook和post-install hook能够清楚成回调函数,是在podfile里对于install此前依旧今后(生成工程可是还没写入磁盘)可以试行的逻辑,逻辑为:

pre_install do |installer| # 做一些安装之前的hookendpost_install do |installer| # 做一些安装之后的hookend

必威 5CocoaPods的下载流程

  • 先是,CocoaPods会依照Podfile中的描述进行重视分析,最后得出三个扁平的信赖表。这里,CocoaPods使用了贰个称呼 Milinillo 的正视性关系消除算法。轻松说便是行使了回溯法来照看出装有第三方库的三个依赖列表出来,据书上说是CoocaPods的付出技术员原创的算法,在消除问题上理应是够用,可是一般若是第三方库复杂的时候会有总体性难题。这里美团能力公司对此有特意的优化,详细情形请见 美团外送食品iOS多端复用的推进、支撑与思维。
  • 针对列表中的各类,回去Spec的Repo中查看其podSpec文件,找到其地址
  • 透过downloader进行对应库的下载。如果地点为git+tag,则此步骤为git clone xxxx.git在意,此时必得求力保必要下载的pod版本号和git仓库的tag标签号一致。

全体重视库下载之后,便踏向了和Xcode工程的同心协力步骤。

必威 6Xcode工程上有何变化

在cocoaPods和Xcode工程举行合併的进程中,会有有以下流程

  • creat workspace创立xcworkspace文件。其实xcworkspace文件精神上只是xcodeproject的集中,数据结构如下:
<?xml version="1.0" encoding="UTF-8"?><Workspace version = "1.0"> <FileRef location = "group:Demo/Demo.xcodeproj"> </FileRef> <FileRef location = "group:Pods/Pods.xcodeproj"> </FileRef></Workspace>
  • create group在工程中开创group文件夹,逻辑上割裂一些文件

  • create pod project & add pod library创造pod.xcodeproject工程,何况就要podfile中定义的第三方库引进到那几个工程之中。

  • add embed frameworks script phase添加了[CP] Embed Pods Frameworks,相应的,多了pods_xxx的group,下列xxx.framework.sh,来产生将中间第三方库打包成.a静态库文件(在Podfile中一旦采取了!use_frameworks,则此步骤会打包成.framework)

    必威 7[CP] Embed Pods Frameworks

  • remove embed frameworks script phase如果此次podfile删除了一些第三方库,则此步骤会去除掉无需的第三方库,将其的援用关系从Pod.xcodeproject工程中拿走。

  • add copy resource script phase假设第三方仓库储存在财富bundle,则此步骤会将能源文件举办复制到聚焦的目录中,方便统一开展打包和包裹。相应的,会助长[CP] Copy Pods Resources脚本。

    必威 8[CP] Copy Pods Resources

  • add check manifest.lock script phase前文提到过,manifest.lock其实是podfile.lock的别本。此步骤会开展diff,借使存在差异,则会提醒闻名的那句The sandbox is not sync with the podfile.lock错误。

  • add user script phase此步骤是对原来project工程文件实行改建。在运作过pod install后,再度张开原有工程会意识不能编写翻译通过,因为已经做了改动。

    • 先是,增加了对Pod工程的凭仗,具体为援引中多了libPods_xxx.a文件。此步骤的.a文件(可能.framework文件)为上述手续中xxx.framework.sh打包出来的文件,约等于说,cocoaPods会把具备第三方的机件封装为二个.a文件(大概.framework文件)!

      必威 9静态文件引进

    • 树立了Pods的group,内含pods-xxx-debug.xconfig和pods-xxx.release.xconfig文件。那七个文本是对应工程的build phase的安排。相应的,主工程的Iinfo->Configurations的debug和release配置会对应上述多个布局文件。

      必威 10Configurations

    • 上述多少个布局都做了何等?包涵:Header_search_path,指向了Pod/Headers/public/xxx,增多了Pods文件编写翻译后的头文件地方Other_LDFLAGS,增添了-ObjC等等一些Pods变了,比如Pods_BUILD_DIR等

时至今日,原有xcode工程和新建的Pod工程变成了集成和交融。

好了,cocoaPods的裨益和规律已经介绍的几近了。超越50%时辰,我们透过援用github上的组件就丰盛了。可是不经常处于职业要求,我们要求来兑现个人Pod库。所以接下去大家来介绍下怎么在同盟社内网来贯彻四个私有库,完结叁个民用组件。

  • 安装好XCode
  • 布局好CocoaPods,并且能够pod update 以及 pod install 成功
  • 业已收获CocoaPods的Repo的地方,以及相应pod的Git地址(这里以git.xxx.com上申请的repo为例)
  • 事关到的装有操作,请尽量在Terminal中张开,包蕴CocoaPods的相干操作(不要在CocoaPods官方顾客端操作)
  • 本文涉及到的德姆o,能够去

所谓Spec Repo,正是Pods的目录。一旦在podfile中设置source为有个别私有repo的git地址,在进展pod update的时候就能去那几个repo中开展查找,如果寻觅到相应的pod,会读取该Pod的podspec进而举行设置。一个Spec Repo的目录结构如下:

必威 11image.png

从此我们去git.xxx.com上新建三个应和的Repo地址,之后加多repo到地头,该repo地址是为着前面提交podspec使用。

# pod repo add [Private Repo Name] [GitHub HTTPS clone URL]pod repo add XXXCocoaPodsRepo git@git.xxx.com:XXX_SPA_XXX/iOS_CocoaPods_Repo.git

得逞后能够踏入~/.cocoapods/repos目录下查看XXXCocoaPodsRepo这么些目录了。

此处,我们以HelloXXXPod为例。去git.xxx.com上去新建项目,之后获得地址,为:

git@git.xxx.com:XXX_SPA_XXX/HelloXXXPod.git

此时clone到本地,命令为:

git clone git@git.xxx.com:XXX_SPA_XXX/HelloXXXPod.git

此间建议通过CocoPods的官方命令来拓宽Pod项指标创设,以测量检验项目HelloXXXPod为例,命令如下:

pod lib create HelloXXXPod

不出意外市话,会咨询你多个难题(cocoaPods v1.5.3本子):

1.What platform do you want to use? [ iOS / macOS ]2.What language do you want to use? [ Swift / ObjC ]3.Would you like to include a demo application with your library? [ Yes / No ]4.Which testing frameworks will you use? [ Specta / Kiwi / None ]5.Would you like to do view based testing? [ Yes / No ]6.What is your class prefix?

分别解释一下

  • What platform do you want to use?? [ iOS / macOS ]问组件化应用在哪些平台上,一般大家选iOS

  • What language do you want to use? [ Swift / ObjC ]运用何种语言,能够依照项目是OC仍旧斯威夫特自行选取

  • Would you like to include a demo application with your library? [ Yes / No ]问是否要求一个德姆o工程,方便调试Pod。就算是率先次做组件化,提议选Yes,方便pod的调节和测量试验

  • Which testing frameworks will you use? [ Specta / Kiwi / None ]问是还是不是要求UT测验框架,可选用Specta和Kiwi,也许选拔不要。

  • Specta是OC的一个轻量级TDD/BDD框架,参谋github/specta

  • Kiwi是一个iOS的二个BDD框架,能够大致地配备和动用。github/kiwiUT测量试验框架假如要选用的话,提议选拔Kiwi,可以参见作者后面写的调研kiwi上手体验这次的德姆o,权且选None

  • Would you like to do view based testing? [ Yes / No ]假若上一步选取了Specta ,这步会扭转一部分有益做自动化测量试验的逻辑和代码

  • What is your class prefix?这里能够钦命你的种类前缀,那样在new多少个类时会自行抬高前缀

从此我们运行pod install,生成的文件目录树结构如下:

$ tree HelloXXXPod -L 2HelloXXXPod├── Example│ ├── Build│ ├── Podfile│ ├── Podfile.lock│ ├── Pods│ ├── Tests│ ├── helloXXXPod│ ├── helloXXXPod.xcodeproj│ └── helloXXXPod.xcworkspace├── LICENSE├── README.md├── _Pods.xcodeproj -> Example/Pods/Pods.xcodeproj├── helloXXXPod│ ├── Assets│ └── Classes└── helloXXXPod.podspec

此刻能够在刚刚变动的Example工程内做开辟,那时候记得把新建的代码放到Classes目录下。即便有图表财富,建议松开Assets下。

开荒、调试实现以往,就能够去编辑podspec文件了。按以下办法来修改,不知底的字段请参见官方文书档案:

此处给出这一次德姆o的podspec供各位参照他事他说加以考察:

Pod::Spec.new do |s| s.name = 'helloXXXPod' s.version = '0.1.0' s.summary = 'A short description of helloXXXPod.' s.description = <<-DESCTODO: Add long description of the pod here. DESC s.homepage = 'https://git.xxx.com/XXX_SPA_XXX/HelloXXXPod' s.license = { :type => 'MIT', :file => 'LICENSE' } s.author = { 'nimomeng' => 'nimomeng@tencent.com' } s.source = { :git => 'git@git.xxx.com:XXX_SPA_XXX/HelloXXXPod.git', :tag => s.version.to_s } s.ios.deployment_target = '8.0' s.source_files = 'helloXXXPod/Classes/**/*'end

个中,注意修改那多少个字段:

  • s.name
  • s.homepage
  • s.source
  • s.source_files (假设不放在Classes下,记得在那边钦命文件目录)

假要是经过pod lib create指令创造的Pod,会在Example中自动配置好该pod的当地调节和测验脚本,如下:

use_frameworks!platform :ios, '8.0'target 'helloXXXPod_Example' do pod 'helloXXXPod' :path => '../' target 'helloXXXPod_Tests' do inherit! :search_paths endend

其中,pod 'helloXXXPod' :path => '../'的含义是说,在上层目录来下载helloXXXPod以此pod。那是本地调节和测量检验Pod的一种。同样的,能够兑现类似措施调节和测验的方法,还可能有通过:podspec指令来钦赐,钦定pod所在的podspec文件地点就可以

中间,path语法正确到目录即可;podspec语法一定要正确到文件。

设置好podfile之后,在Example文件下实践pod install,则能够开掘新的文书已经面世在项目工程的pods文件夹之下了。

必威 12image.png

注意,通过path语法实行更新后,Pod中代码并不在Pod文件夹中,而是在贰个叫 Development Pods中。

支付达成,要求地点验证podspec,确认保证其立见成效:

pod lib lint helloXXXPod.podspec

从此要做的就是把库同步到Git上去了。这时候须求去git.xxx.com上树立一个对应的酒馆,比如:

http://git.xxx.com/XXX_SPA_XXX/HelloXXXPod.git (替换为自己的实际git地址)

下一场将代码同步到此Git上。

git add .git commit -m "Init"git remote add origin http://git.xxx.com/XXX_SPA_XXX/HelloXXXPod.git(替换为自己的实际git地址)git push --set-upstream origin master

podSpec文件供给版本调控新闻,所以大家要打贰个Tag.

git tag -m "first demo" 0.1.0git push --tags

在推行本歩在此以前,确认保障新型代码已经付出到了Git上,且已经打好了tag.

向Spec Repo提交podspec的命令:

pod repo push XXXCocoaPodsRepo HelloXXXPod.podspec --allow-warnings

在经过三轮车的顾客校验之后,提交成功!那时候大家去~/.cocoapods/repos/XXXCocoaPodsRepo中查看,我们的的podspec已经在里头了!

那时候经过pod search HelloXXXPod 已经能够查到了!

必威 13image.png

最终,为了保证本地的repo已经被更新,运维pod update来更新repo

大家得以在想要使用的类型中的Podfile里加入如下代码:

pod 'helloXXXPod'

就可以。当然,由于我们的是私有CocoaPods库,由此最棒报告系统这么些库的source在哪儿,因而在Podfile文件上部也请加上Spec Repo的git地址。同一时间,为了确定保证国有的cocoaPod能够被正常下载,请增多外部CocoaPod的库:

# For inner podssource 'git@git.xxx.com:XXX_SPA_XXX/iOS_CocoaPods_Repo.git'# For public podssource 'https://github.com/CocoaPods/Specs.git'

方方面面包车型大巴Podfile文件看起来是如此的:

use_frameworks!platform :ios, '8.0'# source 'git@git.xxx.com:XXX_SPA_XXX/iOS_CocoaPods_Repo.git'# For public podssource 'https://github.com/CocoaPods/Specs.git'target 'helloXXXPod_Example' do pod 'helloXXXPod' target 'helloXXXPod_Tests' do inherit! :search_paths endend

然后运维pod install 就能够安装相应的Pods

大家能够复用Example项目,只不过本次不再通过:path命令可能:podspec命令来做地方调用,而是一心选取安装外界pod的法子,即:

 pod 'helloXXXPod'

细心:即便pod已经推送到线上,不过地点供给求先更新pod的repo,不然照旧不能找到最新的pod。确认保证先做pod update操作。

Example项目中,我们调用在Pod中写好的方法,查看是或不是输入相应的log就能够验证:

必威 14image.png

至此,Pod创立实现。

  • 假设pod中用到framework,应该在何地增加?

    就算pod中用到framework,如AVFoundation,直接在podspec文件中增加s.frameworks = ‘AVFoundation’恐怕s.frameworks = [‘AVFoundation’,'MapKit'],而不应当加多在项目标Link Binary With Libraries下边。

  • 怎么取更新个人 pod?

    更新个人pod的经过和开创pod的步骤同样,但是要记得在改动代码后要记得一定再一次run一下aggregate,改变podspec里的s.version(因为tag不可能重新提交), 重新pod repo push

  • 假设出现这些漏洞非常多怎么做:

[!] An unexpected version directory `Assets` was encountered for the `/Users/nimo/.cocoapods/repos/xxxx` Pod in the `xxxx` repository.

其一荒唐,请查看:

  • podspec 是或不是未上传到服务器
  • Podfile的source地址是不是是Spec Repo的地方,并不是现实性某多少个Pod的地址。
  • iOS模块化施行 -- 利用CocoaPods拆分体系
  • 使用Cocoapods创造私有podspec

5.3创建.podspec文件

5.3.1.podspec文件的功用是为了让CocoaPods找寻引擎知道该代码的我、版本号、概要、描述、源代码地址、铺排版本、重视的框架等描述新闻。

5.3.2创建.podspec文件:

①cd Documents 从GitHub上边clone下来文件夹目录推行pod spec create ZCBLSDK

②双击打开ZCBLSDK.podspec文件进行编辑

Pod::Spec.new do |s|

#名称

  s.name        = "ZCBLSDK"

#版本号

  s.version      = "1.0.0"

#简介

  s.summary      = "ZCBLSDK is about test framework"

#描述

  s.description  = "ZCBLSDK is about test framework!!!"

#类型主页地址

  s.homepage    = ""

#许可证

  s.license      = { :type => "MIT", :file => "LICENSE" }

#作者

  s.author            = { "cheer_harry" => "cheer_harry@163.com" }

#帮衬最小系统版本

  s.platform    = :ios, "8.0"

#品类的地址 (注意这里的tag地点,能够协调写也足以直接用s.version,可是与s.version必必要合併)

  s.source = { :git => "", :tag => s.version}

#您的能源路线

  s.resources = "Frameworks/ZCBLSDK.bundle"

#你的SDK路径

  s.vendored_frameworks = "Frameworks/ZCBLSDK.framework"

 # s.dependency "WilddogVideoRoom" // framework中依赖第三方SDK

#  s.dependency "Wilddog/Sync" // framework中依靠第三方SDK

end

只顾此处的.podspec文件不必要上传GitHub

f、把源代码推送到长途酒馆
//进入源代码根目录
cd ~
//添加到git得暂存区
git add -A
//提交到本地仓库
git commit -m "first commit"
//添加远端仓库地址
git remote add origin https://github.com/upupSue/BLLibPopController.git
//把本地代码推送到远端仓库
git push -u origin master

4 创立实现后

5.4上传CocoaPods

5.4.1验证.podspec文件是或不是合法

pod spec lint ZCBLSDK.podspec

5.4.2提交.podspec文件到Trunk中

pod trunk push ZCBLSDK.podspec

唤醒successfully published则象征上传成功

在意:验证进度中战败能够增添--verbose查看原因,

①如若s.dependency富含了.a静态库变成错误,即便那并不影响Pod的使用,但是验证是一点都不大概通过的,能够经过 --use-libraries 来让认证通过。

②运用 --use-libraries 尽管不会现出错误(error),不过不时会带动一些警示(waring),警告同样是敬谢不敏透过验证的,那时能够用 --allow-warnings 来允许警告。

pod spec lint ZCBLSDK.podspec --verbose --use-libraries --allow-warnings

3、编辑.podspec文件

修改s.source

s.source = { :git => "远端仓库地址", :tag => '0.1.0' }

检查Podspec lints是或不是科学。那足以经过三种艺术成功,pod lib lint和pod spec lint。 它们中间的分别是,pod lib lint不访问网络,而pod spec lint会检查外界repo和关联的价签。

pod lib lint BLPopHandlerController.podspec
...
BLPopHandlerController.podspec passed validation.

创设成功

5.5使用CocoaPods集成ZCBLSDK

5.5.1开发Xcode创造贰个测量试验德姆o,在工程目录下边加多podfile文件,双击点开podfile文件加多

platform :ios,'8.0'

target 'TestPodDemo' do

pod 'ZCBLSDK'

end

下一场实施pod install

小心就算直接施行pod search ZCBLSDK出现找不到的动静能够行使以下三种方案消除:

①执行pod repo update master

②前往--->前往文件夹--->资源库--->Caches--->CocoaPods--->删除search_index.json文件,然后再进行pod search ZCBLSDK

③在工程目录上面加多podfile文件,双击点开podfile文件增多

platform :ios,'8.0'

target 'TestPodDemo' do

pod 'ZCBLSDK'

end

然后实行pod update

4、打tag, 发表八个release版本

整整图谋伏贴后, 大家必要在你的git仓库里面存在一个与.podspec文件中一律的version, 这里您能够在你的git仓库中的releases一项去手动公布, 也能够在当下文件夹下使用终端命令:

git tag -m 'first release' '1.0.1'
git push --tags #推送tag到远端仓库

成功之后就能够在您的releases里面看到这么些tag的版本.

二、上传代码到成立的库房

5、发表自身的库描述文件podspec给cocoapods

长久以来在那一个文件夹下, 终端实践:

pod trunk push BLPopHandlerController.podspec --allow-warnings

查看是还是不是交付成功。

1 选拔clone 到地面仓库

6、关于寻觅和动用新创设的库

pod search BLPopHandlerController考察是或不是可用

基本上景况下会出现那些主题材料:

[!] Unable to find a pod with name, author, summary, or description matching `BLPopController`

那重大是因为在该地索引里面未有, 化解办法

  1. pod setup (不行,使用方式二)
  2. pod repo update(不行,使用格局三)
  3. 前往那么些路子下~/Library/Caches/CocoaPods删除search_index.json文件 , 恐怕利用终端命令删除:rm ~/Library/Caches/CocoaPods/search_index.json然后重新搜索.

mac Computer中,有github的客商端

7、更新维护podspec

只要有荒唐也许必要迭代版本,修改工程文件后推送到远端旅舍后, 需求修改podspec中的版本号, 天公地道新打tag上传, 再开展新一轮的辨证和文告, 当然, 创建几个示范demo工程供别的开拓者下载查看并不会潜移暗化大家的pod库.

扩展阅读

CocoaPods创造公有和民用Pod库方法总括

iOS:最详细的成立CocoaPods私有库教程

必威 15

github MAC客户端

进入github网站后,右边栏

必威 16

clone

也足以用命令终端的

// 代码旅社clone 地址 git clone

2.编辑代码

必威 17

写入的代码

3.创造二个tag 版本

必威 18

创立二个Tag

假定这里不会,能够看本人的另一篇小说Git tag的运用

4.上传到github

必威 19

上传到github仓库

三、向地面git仓库中加多创制Pods注重库所需文件

1 这一个文件必要放在clone 到的本地货仓目录下(需求在终极cd步入clone的十一分目录下)

2 创建 podspec

// 在指令终端pod spec create XWSwiftRefreshT

成功后

必威 20

创建podspec成功

3 编写podspec文件,能够利用Vim,或然Xcode,Sublime也得以,那是贰个Ruby文件

Pod::Spec.newdo|s|# 名称 使用的时候pod search [name]s.name ="XWSwiftRefreshT"# 代码库的本子s.version ="0.1.2"# 简介s.summary ="The easiest way to use pull-to-refresh with Swift2.0 program language."# 主页s.homepage =" 许可证明类型,要和储藏室的LICENSE 的类型一致s.license ="MIT"# 小编名称 和 邮箱s.author = {"boyXiong"=>"relv@qq.com"}# 作者主页 s.social_media_url =" 代码库最低扶助的版本s.platform = :ios,"8.0"# 代码的Clone 地址 和 tag 版本s.source = { :git =>"", :tag =>"0.1.2"}# 要是应用pod 要求导入哪些能源s.source_files ="XWSwiftRefreshT/**/*.{swift}"s.resources ="XWSwiftRefreshT/Icon/xw_icon.bundle"# 框架是还是不是选择的ARCs.requires_arc =trueend

4 编写成功后,先进行地面检查,使用,怎样得以便是栗色,不然会报错

//pod spec lint [podspec 的路径]pod spec lint ./XWSwiftRefreshT.podspec

5 注意 这一个命令的检讨原理,是调用Xcode app的授命检查评定一旦Mac上安装了三个Xcode那么她的反省是基于Application/Xcode.app/这种渠道来的,四个Xcode 将在保险Xcode.app是流行的科班版本不是测量检验版本

6 然后得以发送到cocoapod处理了

//pod trunkpush[podspec 的路径]pod trunkpush./XWSwiftRefreshT.podspec

必威 21

上传到cocoapod成功

7.到此地纵然成功就索求的到,那么身为能够成功采用了

pod search XWSwiftRefreshT

必威 22

打响找出到框架

必威 23

Paste_Image.png

那是本人整理的成本常用Category 用pod 搜索 TTCategory 就足以

github连接:

世家有新的,好用的category也足以发给小编自身回持续更新.

一、创建的github仓库

1 步入Github网址www.github.com登录自身的账号后

2 构建三个新的货仓

必威 24

创办新的库房

3 填写商旅消息

必威 25

填写旅舍音信

4 成立完结后

必威 26

后面包车型客车步骤比较轻松相信大家很轻巧就会clone到本地,如果未有github个顾客端的能够去下多少个,未有的话用命令也是足以的

必威 27

接下去把你想要托管的代码归入本地酒馆中

必威 28

此处看到 .podspec 和TTcategory 是同顶级目录,下边设置 podspec 文件,文件路线的时候要用到这里.

四、注册TRUNK

在注册trunk在此之前,大家要求认可当前的CocoaPods版本是还是不是丰硕新。trunk需求pod在0.33及以上版本,如若您不满足须要,展开Terminal使用ruby的gem命令更新pod:

本文由必威发布于必威-编程,转载请注明出处:那么只需要以下几个步骤,必威:3 填写仓库信息

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。