本人之前在使用Carthage打包的时候,希望能将打包的framework随着项目一起发布到远端git上,结果发现每次生成的framework,并不是根据pull下来的Sources文件去临时build framework。 而是从本地push上去的framework,导致每次修改Sources文件,都必须在本地carthage update 后把framework发布到git上,这显然不是我想要的效果。
因此,接下来介绍一种使用swift package 来构建一个适用Carthage发包的一个项目。
首先:新建一个目录
$ mkdir PhotoPick
$ cd PhotoPick/
在该目录下执行
$ swift package init
初始化生成一个符合package标准的项目(可忽略删掉Tests文件夹)
$ swift package generate-xcodeproj
生成一个Xcode项目
打开这个工程之后,你会发现这个项目是一个MAC OS 项目,接下来我们需要把这个项目设置为iOS项目。
将Base SDK 的macOS 修改为 iOS , 将Supported PlatForms 修改为iOS
接着点击TARGETS 上的 PhotoPick,重复一遍上面操作,将SDK改成iOS类型
然后把想要编译的源文件放入Source目录下。
确定需要编译的文件
接着执行命令 carthage build --no-skip-current
若执行失败出现
Build Failed
Task failed with exit code 65:
/usr/bin/xcrun xcodebuild -project /Users/Auto/Desktop/PhotoPick/PhotoPick.xcodeproj -scheme PhotoPick -configuration Release -sdk watchos ONLY_ACTIVE_ARCH=NO BITCODE_GENERATION_MODE=bitcode CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY= CARTHAGE=YES clean build
是由于 Supported PlatForms选项未修改成iOS 平台SDK所造成的。可以尝试修改正确
若build成功,则可以看到,PhotoPick.framework成功生成
接着我们可以新建一个Demo来测试一下freamwork的功能。
File -> New -> Target -> Single View Application
在Embedded Binaries 上添加该framework
framework可以正常使用
终于大功告成了!
最后,可以将项目发布到github或git上面,注意给版本添加标签。
使用Carthage管理的项目,只需要在Carthage文件内添加该git路径以及标签号。
最后执行carthage update 拉下Souces下源码后,立刻自动build 相应的framework。
尽情享受Carthage 管理第三方依赖包所带来的便捷吧~