cocoappods 相关随笔

你。 提交于 2020-05-08 04:48:44

创建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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!