Carthage的Cartfile和Cartfile.resolved文件

来源:互联网 发布:wps表格怎么改数据 编辑:程序博客网 时间:2024/06/03 19:47

Cartfile文件存储的是当前你想要更新的代码地址,利用carthage.update更新的是这个文件内的代码地址。

Cartfile.resolved内容是当你更新了carthage update之后,根据Cartfile的文件内容生成Cartfile.resolved的内容。执行carthage bootstrap更新当前Cartfile.resolved。

Cartfile.resolved一定是和当前代码所匹配的文件。如果你更新了Cartfile文件得某个代码地址,而你执行的指令是carthage bootstrap,依然不会更新你刚刚在Cartfile更改的那个分支代码地址。只有使用carthage update才会更新你刚才的更改。

源码调试技巧:

当在A工程中想要脱离某个工程B的framework二进制依赖,而使用源码调试,这样做:

下载B工程一份源码,然后将A工程中B.framework移除掉,再拖B工程源码最外层的B.xcodeproj到A工程内部,注意此时B工程源码最外层的B.xcodeproj是一个framework,当单独编译这个最外层的B.xcodeproj只是编译成一个framework,并不会生成app,因为只需要调试,而不是单独运行B.xcodeproj,所以不需要打开内部的universal的B.xcodeproj工程。然后接着在A工程的target中,点击target,在右侧的Target Dependence中添加B.framework,接着在link Binary With Libraries中添加B.framework,最后在Embed Framework中添加B.framework。这样就可以build成功,进行源码调试。

分析外层A.xcodeproj和内层universal-iphone的区别与结构,以及需要注意的:

1.外层A.xcodeproj只是一个单独的源码,进行编译也只会生成一个framework,因为外层的target目标生成就是一个framework。外层的carthage管理的二进制framework或者源码库,只是生成framework所需要依赖的,支持生成framework而存在的。

2.内层的源码universal-iphone其实target是一个.app,所以当运行的时候会生成一个可调试的app。但是想要运行成功,会依赖很多framework。

首先要看到,外层的源码A.xcodeproj现在是内嵌在这里的,外层的源码要编译成一个framework再添加到.app中,那么注意这个现在外层源码嵌入在这里的时候,需要点击工程的Target,然后再点击Target Dependence添加name.framework,接着在link Binary With Libraries中添加name.framework,最后在Embed Framework中添加name.framework关联不起来,这个和拖源码调试一个道理。

3.内层源码下面framework文件中许多各种各样的.framework,这些是由内层universal-iphone的carthage文件所管理生成的,其实这些也都是辅助生成.app的,只不过都已经提前编译好的。和嵌进来的源码不一样A.xcodeproj,嵌入进来的因为是源码所以就需要编译后再通过。

4.在开发过程中,如果遇到某个库的文件报错,例如在universal-iphone外层中嵌入了两个源码库,B.xcodeproj工程和C.xcodeproj,当运行时候D.framework的某个文件[DCustomView  show]报错,说这个show方法不能识别报错,这个时候可以去查看下B.xcodeproj的外层carthage文件的D.framework版本号是否和D.framework的外层carthage文件的D.framework版本号一致,很有可能因为不一致所引发的问题。

具体问题具体分析。多遇到问题多解决问题。


原创粉丝点击