之前已经折腾了Cocoapods:
但是很明显,有点点复杂的说。不是足够好用。
搜:
ios cocoapods carthage
然后看了:
Carthage 初探:四大优势与四大劣势 | I’m TualatriX
Cocoa 新的依赖管理工具:Carthage – isaced
Carthage:去中心化的Cocoa依赖管理器 – CocoaChina_让移动开发更简单
更加确定去用:
Carthage
至少也是Carthage和Cocoapods两者共存去管理第三方包
另外,也是因为:
遇到一个自动布局的库:
robb/Cartography: A declarative Auto Layout DSL for Swift
为了能使用:
之前下载的源码,都被我改了一点,才能正常的在Xcode 7.3.1+swift 2.2下面工作
-》但是直接拷贝过来代码,再去改,很是麻烦
-》所以考虑到用,直接编译成.framework的Carthage
Carthage Tutorial: Getting Started
Carthage/Carthage: A simple, decentralized dependency manager for Cocoa
我现在是Xcode 7.3.1
[记录]关于Homebrew和brew,并用brew安装Carthage
继续参考官网教程:
Carthage/Carthage: A simple, decentralized dependency manager for Cocoa
此处是用于iOS
去创建对应的Cartfile
Carthage/Artifacts.md at master · Carthage/Carthage
[记录]OGDL, Ordered graph data language
对于:
https://github.com/robb/Cartography
创建并添加内容如下:
licrifandeMacBook-Pro:QorosSales crifan$ touch Cartfile licrifandeMacBook-Pro:QorosSales crifan$ vi Cartfile licrifandeMacBook-Pro:QorosSales crifan$ cat Cartfile github “robb/Cartography” |
然后去更新:
licrifandeMacBook-Pro:QorosSales crifan$ carthage update *** Cloning Cartography *** Checking out Cartography at “0.6.0” *** xcodebuild output can be found in /var/folders/46/2hjxz38n22n3ypp_5f6_p__00000gn/T/carthage-xcodebuild.6d7TLb.log *** Building scheme “Cartography-Mac” in Cartography.xcodeproj 2016-05-14 15:16:21.610 xcodebuild[24779:2172636] [MT] PluginLoading: Required plug-in compatibility UUID ACA8656B-FEA8-4B6D-8E4A-93F4C95C362C for plug-in at path ‘~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/WCGitTagsPlugin.xcplugin’ not present in DVTPlugInCompatibilityUUIDs *** Building scheme “Cartography-iOS” in Cartography.xcodeproj 2016-05-14 15:16:37.201 xcodebuild[24847:2173074] [MT] PluginLoading: Required plug-in compatibility UUID ACA8656B-FEA8-4B6D-8E4A-93F4C95C362C for plug-in at path ‘~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/WCGitTagsPlugin.xcplugin’ not present in DVTPlugInCompatibilityUUIDs 2016-05-14 15:16:50.878 xcodebuild[24979:2173500] [MT] PluginLoading: Required plug-in compatibility UUID ACA8656B-FEA8-4B6D-8E4A-93F4C95C362C for plug-in at path ‘~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/WCGitTagsPlugin.xcplugin’ not present in DVTPlugInCompatibilityUUIDs /Users/crifan/dev/dev_root/daryun/Projects/Qoros/QorosSales/Sourcecode/QorosSales/Carthage/Checkouts/Cartography/Cartography/ViewUtils.swift:40:16: warning: ‘anyGenerator’ is deprecated: renamed to ‘AnyGenerator’ /Users/crifan/dev/dev_root/daryun/Projects/Qoros/QorosSales/Sourcecode/QorosSales/Carthage/Checkouts/Cartography/Cartography/ViewUtils.swift:40:16: warning: ‘anyGenerator’ is deprecated: renamed to ‘AnyGenerator’ ld: warning: directory not found for option ‘-F/Users/crifan/dev/dev_root/daryun/Projects/Qoros/QorosSales/Sourcecode/QorosSales/Carthage/Checkouts/Cartography/Carthage/Build/Mac’ /Users/crifan/dev/dev_root/daryun/Projects/Qoros/QorosSales/Sourcecode/QorosSales/Carthage/Checkouts/Cartography/Cartography/ViewUtils.swift:40:16: warning: ‘anyGenerator’ is deprecated: renamed to ‘AnyGenerator’ /Users/crifan/dev/dev_root/daryun/Projects/Qoros/QorosSales/Sourcecode/QorosSales/Carthage/Checkouts/Cartography/Cartography/ViewUtils.swift:40:16: warning: ‘anyGenerator’ is deprecated: renamed to ‘AnyGenerator’ /Users/crifan/dev/dev_root/daryun/Projects/Qoros/QorosSales/Sourcecode/QorosSales/Carthage/Checkouts/Cartography/Cartography/ViewUtils.swift:40:16: warning: ‘anyGenerator’ is deprecated: renamed to ‘AnyGenerator’ /Users/crifan/dev/dev_root/daryun/Projects/Qoros/QorosSales/Sourcecode/QorosSales/Carthage/Checkouts/Cartography/Cartography/ViewUtils.swift:40:16: warning: ‘anyGenerator’ is deprecated: renamed to ‘AnyGenerator’ ld: warning: directory not found for option ‘-F/Users/crifan/dev/dev_root/daryun/Projects/Qoros/QorosSales/Sourcecode/QorosSales/Carthage/Checkouts/Cartography/Carthage/Build/iOS’ ld: warning: directory not found for option ‘-F/Users/crifan/dev/dev_root/daryun/Projects/Qoros/QorosSales/Sourcecode/QorosSales/Carthage/Checkouts/Cartography/Carthage/Build/iOS’ /Users/crifan/dev/dev_root/daryun/Projects/Qoros/QorosSales/Sourcecode/QorosSales/Carthage/Checkouts/Cartography/Cartography/ViewUtils.swift:40:16: warning: ‘anyGenerator’ is deprecated: renamed to ‘AnyGenerator’ /Users/crifan/dev/dev_root/daryun/Projects/Qoros/QorosSales/Sourcecode/QorosSales/Carthage/Checkouts/Cartography/Cartography/ViewUtils.swift:40:16: warning: ‘anyGenerator’ is deprecated: renamed to ‘AnyGenerator’ /Users/crifan/dev/dev_root/daryun/Projects/Qoros/QorosSales/Sourcecode/QorosSales/Carthage/Checkouts/Cartography/Cartography/ViewUtils.swift:40:16: warning: ‘anyGenerator’ is deprecated: renamed to ‘AnyGenerator’ /Users/crifan/dev/dev_root/daryun/Projects/Qoros/QorosSales/Sourcecode/QorosSales/Carthage/Checkouts/Cartography/Cartography/ViewUtils.swift:40:16: warning: ‘anyGenerator’ is deprecated: renamed to ‘AnyGenerator’ ld: warning: directory not found for option ‘-F/Users/crifan/dev/dev_root/daryun/Projects/Qoros/QorosSales/Sourcecode/QorosSales/Carthage/Checkouts/Cartography/Carthage/Build/iOS’ ld: warning: directory not found for option ‘-F/Users/crifan/dev/dev_root/daryun/Projects/Qoros/QorosSales/Sourcecode/QorosSales/Carthage/Checkouts/Cartography/Carthage/Build/iOS’ licrifandeMacBook-Pro:QorosSales crifan$ |
出现的一堆的找不到选项的警告,不知道是否影响
反正是出现了对应的:
Carthage/Checkouts
下载了源码
Carthage/Build/iOS
中有了对应的:
Cartography.framework
再去:
-》
参考:
去把符号文件dSYM也添加进来:
结果拷贝了个整个文件过来了:
所以好像不应该选择那个:
copy items if needed
的
然后换用:
结果还是有:
算了,移动过去:
算了,感觉官网的意思好像是:
自动就会在拷贝framework的同时,自动拷贝dSYM文件?
干脆去掉上面的设置
-》希望Carthage会自动做这个事情
-》万一没做,调试第三方的库的时候,不能F7进入源码,再回头添加上述的配置,去拷贝dSYM文件
所以去掉上面的配置:
删除掉那个Cartography.framework.dSYM文件即可:
看了看,我此处的默认是no:
然后去clean后重新编译程序,看看能否正常编译,代码中能否正常使用Cartography这个库
结果还是出错:
想起来了,好像需要手动import:
import Cartography
然后再去试试
就可以自动编译了。
[总结]
使用第三方包管理工具(Cocoapods或Carthage)的话,如果用到第三方库中的函数,则需要手动导入对应的库:
import xxx
才可以
-》而之前手动拷贝不同的库的源码到项目中后,直接使用对应的函数即可,无需import对应的库的-》Xcode即可自动找到的
然后再去调试代码,看看F7单步进入,能否进入第三方库的源代码:
发现是可以的:
-》
-》
说明不需要上面的设置去拷贝那个dSYM,Xcode或者是Carthage会自动帮忙找到对应的framework所对应的dSYM文件,即可支持第三方库的源码调试了。
另外去看了看:
Cartfile.resolved
内容为:
github “robb/Cartography” “0.6.0” |
即:
当前安装的Cartography的版本是0.6.0
只有update才会升级版本,否则是不会变化的
详见:
Carthage/Artifacts.md at master · Carthage/Carthage
参考:
Carthage Tutorial: Getting Started
如果以后只想要更新对应版本(而不是所有平台版本),可以用:
carthage update –platform iOS
如果只想要跟新单个库(而不是所有的库),则用:
carthage update xxx
carthage update xxx yyy
-》
所以只想要更新某个库的某个平台的,估计可以用:
carthage update xxx –platform iOS
另外,再去参考:
Cocoa 新的依赖管理工具:Carthage – isaced
新增:
.gitignore
添加上:
#Carthage Carthage |
以便于之后用git的时候,忽略掉Carthage文件夹(及其下的N多源码,编译好的库等等)
转载请注明:在路上 » [记录]折腾iOS的第三方包管理工具:Carthage