cocoappods 相关随笔

创建pods
pod lib create YLCommon

更新pods
pod update --no-repo-update

pod install
把Podfile内全部的库更新重新安装
pod install --verbose --no-repo-update
该命令只安装新添加的库,已更新的库忽略
pod update 库名--verbose --no-repo-update
该命令只更新指定的库,其它库忽略

pod库,索引
添加
pod repo add YLCategory http://code.paic.com.cn/yl-xubin/ylcategory.git

升级
1、终端cd到本地仓库YLCommon文件加下, 调用pod lib lint和 pod spec lint 检测YLCommon.podspec文件

2、终端cd到YLCommon文件夹,将podspec添加到本地私有索引库, 然后自动push到远程索引库
pod repo push YLCommon YLCommon.podspec --allow-warnings
pod repo push YLNetworkingSpec YLNetworking.podspec --allow-warnings

更新pod库,代码
git pull origin master
git add .//添加文件到缓冲区
git commit -m "描述"//从缓冲区提交代码到仓库
git pull origin master --allow-unrelated-histories
git push origin master
git tag -a '0.0.1' -m '描述'//添加tag
git push --tags//将本地创建的tag推到远程库

git 命令
git init//初始化
git status//查看状态
git add .//添加文件到缓冲区
git commit -m "描述"//从缓冲区提交代码到仓库
git tag -a '0.0.1' -m '描述'//添加tag

git remote add origin https://github.com/xxx.git//关联本地仓库和远程仓库。
git pull origin master --allow-unrelated-histories
git push origin master//将本地库的代码推到远程库
git push --tags//将本地创建的tag推到远程库

删除tag命令
git tag //查看tag
git tag -d '0.0.1'//删除tag
git push origin :0.0.1//删除tag

pod repo push YLCategory YLCategory.podspec --allow-warnings

子库
s.subspec 'Cache' do |c|
c.source_files = 'LXFBase/Classes/Cache/**/*'
c.dependency 'SDWebImage', '~> 4.3.3'
end

s.subspec 'Category' do |c|
c.source_files = 'LXFBase/Classes/Category/**/*'
end

s.subspec 'Tool' do |t|
t.source_files = 'LXFBase/Classes/Tool/**/*'
end

s.subspec 'AlertView' do |ss|
ss.dependency 'iOS-Tools/HexColors'
ss.dependency 'AFNetworking', '~> 3.0.0'
ss.source_files = 'iOS-Tools/AlertView/*.{h,m}'
ss.public_header_files = 'iOS-Tools/AlertView/GFBCustomAlertView.h'
end

普通:
1.前往https://github.com/CocoaPods/Specs.git下载Specs-master.zip,解压成Specs-master
2.找到一个文件夹,cmd+shift+G 前往 ~/.cocoapods/repos/master
3.将解压好的Specs-master复制进入master中
4.终端中输入pod repo list ,出现多个仓库,就说明安装成功

私有库引用私有库进行验证
使用pod spec lint进行验证的时候, 会报找不到repo的错误, 需要添加sources选项
pod spec lint --sources='引用私有仓库的repo地址, https://github.com/CocoaPods/Specs'
使用pod repo push时, 同样也需要添加sources选项
pod repo push 本地索引库名 podspec名 --sources='私有仓库repo地址,https://github.com/CocoaPods/Specs'

作者:老孟
链接:https://www.jianshu.com/p/5ab1e6d9ddc3
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

https://www.jianshu.com/p/1e5927eeb341

私有库引用私有库

修改podspec文件加上一句修改配置:
s.user_target_xcconfig = { 'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES' }
pod spec lint --sources=私有库地址,https://github.com/CocoaPods/Specs

pod repo push 私有库名 xxx.podspec --sources=私有库地址,https://github.com/CocoaPods/Specs --allow-warnings

作者:denggun12345
来源:CSDN
原文:https://blog.csdn.net/denggun12345/article/details/85095726
版权声明:本文为博主原创文章,转载请附上博文链接!

s.vendored_libraries = 'SignatureModule/Classes/**/*.{a}'
自己的.a静态库文件目录

s.subspec 'Utils' do |ut|
ut.source_files = 'YLCategory/Classes/Utils//*'
#ut.public_header_files = 'YLCategory/Classes/Utils/YLUtilsHeader.h'
ut.dependency 'MBProgressHUD', '~> 1.1.0'
ut.dependency 'YYCache','~> 1.0.4'
ut.frameworks = 'UIKit','CoreTelephony','Foundation'
end
s.subspec 'Component' do |co|
co.source_files = 'YLCategory/Classes/Component/
/'
#co.public_header_files = 'YLCategory/Classes/Component/YLComponentHeader.h'
co.dependency 'YLCategory/BaseHeader'
co.dependency 'YLCategory/Category'
co.dependency 'Masonry', '~> 1.1.0'
end
s.subspec 'BaseClass' do |bc|
bc.source_files = 'YLCategory/Classes/BaseClass/**/
'
bc.public_header_files = 'YLCategory/Classes/BaseClass/YLBaseClassHeader.h'
bc.dependency 'IQKeyboardManager', '~> 6.3.0'
bc.dependency 'FDFullscreenPopGesture', '~> 1.1'
bc.dependency 'YYModel', '~> 1.0.4'
bc.dependency 'YLCategory/BaseHeader'
bc.dependency 'YLCategory/Category'
bc.dependency 'YLCategory/Utils'
end

,'AddressBookUI','CoreLocation','UserNotifications'

//回退代码
git log
git reset --hard 3633cc3fc1ac233c3d21c1673cfcd8dedcaaaa54
git push -f

更新pods

sudo gem update --system

在cocoapods 执行

sudo gem install cocoapods

的时候出现  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /usr/bin directory.

改为 sudo gem install -n /usr/local/bin cocoapods  即可
————————————————
版权声明:本文为CSDN博主「清雨未尽时」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/kangguang/article/details/79544515

CocoaPods 1.8 Beta的新改进
CocoaPods 1.8将CDN切换为默认的spec repo源,并附带一些增强功能!

注意: 如转载本文章, 请联系作者, 并给出文章的源地址

CDN为默认值
CDN支持最初是在1.7版本中引入的,最终在1.7.2中完成。 它旨在大大加快初始设置和依赖性分析。 使用1.8,CocoaPods不再需要克隆现在巨大的主规格repo才能运行,用户几乎可以立即将他们的项目与CocoaPods集成。

这是在不到一分钟的时间内用新安装的CocoaPods 1.8集成和构建iOS项目的视频演示:

图片
您可以使用以下步骤安全地删除主规格库:

首先,编辑Podfile以将CDN设置为主要来源:

pod repo remove master
复制代码
注意:如果您希望继续使用基于git的源,则必须确保通过源DSL在Podfile中明确指定它,否则CocoaPods将自动使用CDN进行依赖性解析。

就是这样! 有关CDN的更多信息,请阅读之前的博客文章!

info_plist Podspec DSL
CocoaPods在适当的时候自动为pod,app规范和测试规范生成Info.plist文件,例如当Podfile通过指定use_frameworks需要动态框架时! 选项。

Podspecs现在支持通过info_plist DSL修改生成的Info.plist文件的内容。 虽然我们预计这将最常用于修改框架的包标识符,但可以包含任何键值对。 指定的值将覆盖CocoaPods包含的任何默认值。

这是一个例子:

Pod::Spec.new do |s|
s.name = 'NetworkingLib'
s.version = '1.0.0'

...rest of attributes here

s.info_plist = {
'CFBundleIdentifier' => 'com.awesomecompany.networking',
'SERVER_URL' => 'https://example.com/api'
}
end
复制代码
随着1.7中引入的app规范,pod作者能够为他们的pod描述一个应用程序,例如演示应用程序。 新的info_plist DSL通过允许podspecs自定义生成的Info.plist来增强应用程序规范的功能,Info.plist包含重要的设置,例如包标识符,iOS安全和隐私设置,设备方向支持等。

Pod::Spec.new do |s|
s.name = 'ToastLib'
s.version = '1.0.0'

...rest of attributes here

s.app_spec 'ToastCatalog' do |app_spec|
app_spec.info_plist = {
'CFBundleIdentifier' => 'com.bakery.ToastCatalog',
'UISupportedInterfaceOrientations' => [
'UIInterfaceOrientationPortrait',
'UIInterfaceOrientationLandscapeLeft',
'UIInterfaceOrientationLandscapeRight',
],
'UILaunchStoryboardName' => 'LaunchScreen',
'UIMainStoryboardFile' => 'AppStoryboard',
'NSLocationWhenInUseUsageDescription' => 'ToastCatalog uses your location to find nearby Toast!'
}
end
end
复制代码
请务必注意,info_plist属性在未生成Info.plist文件的情况下不起作用,例如将pod集成为静态库时。 如果您的库需要始终存在Info.plist中包含的数据,我们建议您将其作为资源包含在内。

有关其工作原理及其背后的理性的更多详细信息,请在此处查看RFC。

project_name Podfile DSL
CocoaPods 1.7引入了generate_multiple_pod_projects选项,该选项将每个pod安装到自己的Xcode项目中。 CocoaPods 1.8通过引入project_name DSL进一步扩展,允许pod使用者指定项目名称以集成给定的pod。

这为消费者开辟了许多新的可能性,将某些豆荚分组在一起,这在逻辑上是有意义的。 请考虑以下示例:

install! 'cocoapods', :generate_multiple_pod_projects => true

target 'MyApp' do
use_frameworks!

pod 'Moya', :project_name => 'Networking'
pod 'Alamofire', :project_name => 'Networking'
pod 'Result', :project_name => 'Networking'

target 'MyAppTests' do
inherit! :search_paths
pod 'OCMock', :project_name => 'Testing'
end
end
复制代码
会产生以下结果:

图片
消费者可以选择自己的分组,并在其Podfile中提供自动应用项目名称的辅助方法。 例如,另一个分组想法是通过其平台(如iOS或macOS)对pod进行分组。

注意:project_name选项当前还需要启用generate_multiple_pod_projects安装选项才能使其正常工作。 增量安装也已更新,以考虑每个pod使用的项目名称,并将继续按预期工作。

测试规格增强功能
测试规范已成为CocoaPods的一个组成部分,并添加了一些新功能。

UI测试包支持
现在可以支持“UI测试包”,您现在可以指定要用于给定test_spec的test_type。 默认值为: unit,用于创建单元测试包。 考虑我们最喜欢的pod CannonPodder的以下示例:

Pod::Spec.new do |s|
s.name = 'CannonPodder'
s.version = '1.0.0'

...rest of attributes here

s.test_spec 'UITests' do |test_spec|
test_spec.requires_app_host = true
test_spec.test_type = :ui
test_spec.source_files = 'UITests/**/*.swift'
end
end
复制代码
这将在安装时成功集成CannonPodder-UI-UITests UI测试包,并将自动创建要用于它的应用程序主机。

注意:UI测试包需要应用程序主机才能运行,因此如果您选择将测试规范集成为UI测试包,则必须始终指定requires_app_host。

可定制的应用主机
对于大多数情况,生成的测试规范应用程序主机应足以在其中执行测试。 但是,有些情况下pod作者可能希望进一步自定义用于test_spec的app主机。

例如,pod作者可能希望为其应用程序主机或资源包指定其他依赖项,以便在测试期间使用。 应用程序规范是一个很好的候选者,因为它们提供了大多数脚手架和1.8,现在可以通过app_host_name DSL将app_spec设置为test_spec的app主机。

这是一个例子:

Pod::Spec.new do |s|
s.name = 'CannonPodder'
s.version = '1.0.0'

...rest of attributes here

s.app_spec 'DemoApp' do |app_spec|
app_spec.source_files = 'DemoApp/**/*.swift'
# Dependency used only by this app spec.
app_spec.dependency 'Alamofire'
end

s.test_spec 'Tests' do |test_spec|
test_spec.requires_app_host = true
# Use 'DemoApp' as the app host.
test_spec.app_host_name = 'CannonPodder/DemoApp'

# ...rest of attributes here

# This is required since 'DemoApp' is specified as the app host.
test_spec.dependency 'CannonPodder/DemoApp'

end
end
复制代码
会产生以下结果:

图片
这一强大的新功能为pod作者提供了新的可能性,他们希望对用于测试规范的app主机进行更精细的控制。

下一步是什么?
CocoaPods 1.8是一个非常令人兴奋的版本,我们非常高兴您试用它,并建议您升级:

$ gem install cocoapods --pre
复制代码
对于未来版本,我们将继续探索允许pod作者和pod使用者将集成pod配置到其项目中的新方法,例如通过指定单个包或链接设置。 我们已经发布了一份我们正在探索的提案,欢迎您提出意见!

与往常一样,我们要感谢所有贡献者让这个版本成为现实!

签出更改日志以获取完整的更改列表。
https://juejin.im/post/5d4b5f1f6fb9a06ad54708d0

posted @ 2019-10-25 11:14  JustToGo  阅读(676)  评论(0编辑  收藏  举报